2011-12-23 14 views
6

मैं एक कॉम्बो बॉक्स की तरह कार्यक्षमता के साथ एक .NET फॉर्म नियंत्रण को कार्यान्वित करने की कोशिश कर रहा हूं, लेकिन मुझे आइटम की सूची को विस्तारित करने के लिए फ़ॉर्म पर कहीं भी माउस ईवेंट को रोकने के लिए उचित विधि नहीं पता है।कॉम्बो बॉक्स, सूची आइटम प्रदर्शित करते समय, सूची को छिपाने के लिए फ़ॉर्म पर कहीं भी माउस ईवेंट को अवरुद्ध करते हैं?

सूची दिखाए जाने पर माउस नियंत्रणों का जवाब देने से मैं अन्य नियंत्रणों को कैसे रोकूं?

विस्तारित सूची को छिपाने के लिए, मैं फ़ॉर्म पर कहीं भी माउस क्लिक ईवेंट को कुशलता से और सुरक्षित रूप से कैसे पकड़ूं?

+0

आप यहां एक और समाधान ढूंढ सकते हैं: http://stackoverflow.com/a/15305176/1522062 –

उत्तर

6

ToolStripDropDown के साथ बस ToolStripControlHost का उपयोग करें, और यह ComboBox ड्रॉपडाउन की तरह ही काम करेगा। आपको माउस घटनाओं को संभालने के बारे में चिंता करने की ज़रूरत नहीं होगी।

मैं इस का उपयोग किया है से पहले: एक फार्म पर एक बटन नियंत्रण के साथ

Private Sub ShowControl(ByVal fromControl As Control, ByVal whichControl As Control) 
    '\\ whichControl needs MinimumSize set:' 
    whichControl.MinimumSize = whichControl.Size 

    Dim toolDrop As New ToolStripDropDown() 
    Dim toolHost As New ToolStripControlHost(whichControl) 
    toolHost.Margin = New Padding(0) 
    toolDrop.Padding = New Padding(0) 
    toolDrop.Items.Add(toolHost) 
    toolDrop.Show(Me, New Point(fromControl.Left, fromControl.Bottom)) 
End Sub 

त्वरित डेमो:

Private Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click 
    ShowControl(Button1, New MonthCalendar) 
End Sub 

अपने शीर्षक में सवाल का जवाब करने के लिए, मुझे लगता है कि PInvoke कॉल SetCapture और Release Capture का उपयोग उस प्रकार की कार्यक्षमता को संभालने के लिए किया जाता है।

1

Control.Capture

के रूप में दस्तावेज में बताया गया है, अब आप "अपनी" माउस (किसी और यह दर्शाता है जब तक - हालांकि कि बुरा रूप है)। आपको सभी माउस संदेश प्राप्त होते हैं और खारिज करने के लिए आपके नियंत्रण पर नहीं "डाउन" को संभाल सकते हैं।

+0

यह केवल आधा काम लगता है। माउस कैप्चर के साथ नियंत्रण में सभी नियंत्रण काम करना बंद कर देते हैं। उदाहरण के लिए, माउस कैप्चर के साथ एक सूची बॉक्स में स्क्रॉल बार कैप्चर जारी होने तक काम नहीं करता है। –

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^