के लिए संदर्भ मेनू मैं डेटाग्रिडव्यू सेल, पंक्तिबद्ध और कॉलमहेडर के लिए अलग-अलग संदर्भ मेनू सेट करना चाहता हूं। विचार यह है कि जब मैं इनमें से किसी भी आइटम पर राइट-क्लिक करता हूं, तो एक अलग संदर्भ मेनू प्रदर्शित होता है। मैं यह कैसे करु?डेटाग्रिडव्यू सेल, पंक्तिहेडर और कॉलमहेडर
उत्तर
डेटाग्रिड व्यू MouseDown
ईवेंट का उपयोग यह जांचने के लिए करें कि सही माउस क्लिक किया गया है और यदि ऐसा है कि कोई सेल, पंक्ति या कॉलम क्लिक किया गया है, तो यह निर्धारित करने के लिए संबंधित HitTestInfo
प्रॉपर्टी का उपयोग करें। आपको जिस संदर्भ की आवश्यकता है ContextMenuStrip प्रदर्शित करने के लिए इस जानकारी का उपयोग करें।
यहां एक उदाहरण MouseDown
ईवेंट है जो ऐसा करता है। नमूना को एक फॉर्म पर डेटाग्रिड व्यू और तीन कंटेंटमेनूस्ट्रिप्स ड्रॉप करने का प्रयास करने के लिए। ContentMenuStrips mnuCell, mnuRow और mnuColumn नाम दें।
Private Sub DataGridView1_MouseDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles DataGridView1.MouseDown
If e.Button = Windows.Forms.MouseButtons.Right Then
Dim ht As DataGridView.HitTestInfo
ht = Me.DataGridView1.HitTest(e.X, e.Y)
If ht.Type = DataGridViewHitTestType.Cell Then
DataGridView1.ContextMenuStrip = mnuCell
mnuCell.Items(0).Text = String.Format("This is the cell at {0}, {1}", ht.ColumnIndex, ht.RowIndex)
ElseIf ht.Type = DataGridViewHitTestType.RowHeader Then
DataGridView1.ContextMenuStrip = mnuRow
mnuRow.Items(0).Text = "This is row " + ht.RowIndex.ToString()
ElseIf ht.Type = DataGridViewHitTestType.ColumnHeader Then
DataGridView1.ContextMenuStrip = mnuColumn
mnuColumn.Items(0).Text = "This is col " + ht.ColumnIndex.ToString()
End If
End If
End Sub
यहाँ मैं आइटम के लिए ContextMenuStrip उचित करने के लिए DataGridView के ContextMenuStrip संपत्ति बताए कर रहा हूँ सही क्लिक किया (सेल, पंक्ति या स्तंभ)। यह दिखाने के लिए कि आप ContextMenuStrips के व्यवहार को और कैसे अनुकूलित कर सकते हैं, मैं प्रत्येक ContentMenuStrips 'मेनू आइटम में टेक्स्ट भी सेट कर रहा हूं।
डेटाग्रिड व्यू के माउसडाउन ईवेंट पर, DataGridView.HitTest विधि का उपयोग करें और जांचें कि क्या क्लिक किया गया है। फिर आप क्लिक किए गए संदर्भ के आधार पर संदर्भ मेनू स्विच कर सकते हैं।
धन्यवाद, मेरे पास तीन संदर्भमेन हैं, एक पंक्ति, कॉलम और सेल के लिए। मैंने इस पंक्ति में पंक्ति संदर्भमेनू रखा है, "यह पंक्ति है" ', और अन्य दो को अक्षम करें, यह अभी भी एक को दिखाता है, लेकिन जब मैं सेल पर क्लिक करता हूं तो यह पंक्ति संदर्भ मेनू दिखाता है। – Smith
@ स्मिथ मैंने अपने उदाहरण को अपडेट किया जो मुझे लगता है कि आपको चाहिए। –