एक सी # Winforms नियंत्रण कि होवर कैसे बनाएं

वोट
8

आप कैसे एक सी # Winforms नियंत्रण जो अपने क्षेत्र के सीमा से बाहर चला जाता है बना सकते हैं? इस तरह के ड्रॉप-डाउन बॉक्स के रूप में। एक तरह से करता है, तो जैसे आप एक छोटे आकार के कक्ष में एक DropDownBox था।

09/12/2008 को 18:21
का स्रोत उपयोगकर्ता
अन्य भाषाओं में...                            


3 जवाब

वोट
8

विण्डोज़ फॉर्म्स ऐसे ही खिड़कियों का समर्थन नहीं करता अच्छी तरह से, यह बहुत मौलिक डिजाइनर के साथ असंगत है। यहाँ कुछ कोड आप आरंभ करने के लिए है। आप डिजाइनर में इस नियंत्रण का उपयोग नहीं कर सकते हैं, यह रन-टाइम में बनाया जाना चाहिए। तुम भी अपने निपटान () विधि अपने आप को कॉल करना होगा।

using System;
using System.Drawing;
using System.ComponentModel;
using System.Windows.Forms;

public class MyListBox : ListBox {
  private Control mParent;
  private Point mPos;
  private bool mInitialized;

  public MyListBox(Control parent) {
    mParent = parent;
    mInitialized = true;
    this.SetTopLevel(true);
    parent.LocationChanged += new EventHandler(parent_LocationChanged);
    mPos = mParent.Location;
  }

  public new Point Location {
    get { return mParent.PointToClient(this.Location); }
    set { 
      Point zero = mParent.PointToScreen(Point.Empty);
      base.Location = new Point(zero.X + value.X, zero.Y + value.Y);
    }
  }

  protected override Size DefaultSize {
    get {
      return mInitialized ? base.DefaultSize : Size.Empty;
    }
  }

  protected override void SetBoundsCore(int x, int y, int width, int height, BoundsSpecified specified) {
    if (this.mInitialized)
      base.SetBoundsCore(x, y, width, height, specified);
  }

  void parent_LocationChanged(object sender, EventArgs e) {
    base.Location = new Point(base.Left + mParent.Left - mPos.X, base.Top + mParent.Top - mPos.Y);
    mPos = mParent.Location;
  }

  protected override CreateParams CreateParams {
    get {
      CreateParams cp = base.CreateParams;
      if (mParent != null && !DesignMode) {
        cp.Style = (int)(((long)cp.Style & 0xffff) | 0x90200000);
        cp.Parent = mParent.Handle;
        Point pos = mParent.PointToScreen(Point.Empty);
        cp.X = pos.X;
        cp.Y = pos.Y;
        cp.Width = base.DefaultSize.Width;
        cp.Height = base.DefaultSize.Height;
      }
      return cp;
    }
  }
}
09/12/2008 को 22:41
का स्रोत उपयोगकर्ता

वोट
2

मैं हाल ही में कुछ ऐसा है जो करने के लिए समान था, और मैं एक ListBox इस्तेमाल किया। शांत लगता है कि एक लिस्टबॉक्स के बारे में है, कि तुम भी, कहीं भी आप करना चाहते हैं यह प्रदर्शित कर सकते हैं यहां तक ​​कि अपने नियंत्रण से सीमा से बाहर है। इस तरह, जब आप एक बटन क्लिक या जो कुछ भी के माध्यम से पता लगाने, कि आप ड्रॉपडाउन कि आप चाहते हैं प्रदर्शित करने के लिए की जरूरत है, बस ListBox पॉप्युलेट और प्रदर्शित इसे कहीं भी आप चाहते हैं। मैं यहाँ से विचार आया:

http://msdn.microsoft.com/en-us/library/aa480727.aspx

वे, छानने के साथ एक कस्टम DataGridView निर्माण करने के लिए कैसे, और फिल्टर मूल्यों को प्रदर्शित करने के लिए वे हेडर सेल के तहत एक ListBox जगह दिखाते हैं।

09/12/2008 को 20:08
का स्रोत उपयोगकर्ता

वोट
0

यहाँ एक अच्छा लेख है:

http://www.vbaccelerator.com/home/NET/Code/Controls/Popup_Windows/Popup_Windows/article.asp

यह एक वर्ग है जो इस होने का मुश्किल पहलुओं में से कुछ सही ढंग से इस तरह के आवेदन खिड़की शीर्षक पट्टी को सक्रिय रखें, Alt-टैब से निपटने और एक माउस क्लिक के साथ रद्द करने के रूप में काम करने के लिए, संभालती है।

06/07/2012 को 02:47
का स्रोत उपयोगकर्ता

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more