मेरे आवेदन में मेरे पास DataGridView
है जो कुछ विकल्पों को कॉन्फ़िगर करने के लिए है। विचार यह है कि आप पहले कॉलम में जो भी टेक्स्ट चाहते हैं उसे दर्ज कर सकते हैं, लेकिन यदि आप राइट क्लिक करते हैं तो यह आपको स्पष्ट रूप से समर्थित मान देगा। मुझे ड्रॉपडाउन सूची के बजाय टेक्स्टबॉक्स होने की आवश्यकता है क्योंकि मुझे अमान्य (या पुरानी) कॉन्फ़िगरेशन संपादित करने का समर्थन करने की आवश्यकता है।मेरा WinForms संदर्भ मेनू क्यों प्रकट नहीं होता है जहां माउस है?
मैं चाहता हूं कि उपयोगकर्ता फ़ील्ड नाम कॉलम में राइट क्लिक करें और एक संदर्भ मेनू है जो इस प्रकार की कॉन्फ़िगरेशन के आधार पर मान्य है। इसलिए, मैं निम्न इवेंट
private void grvFieldData_CellMouseClick(object sender, DataGridViewCellMouseEventArgs e)
{
// If this is a right click on the Field name column, create a context menu
// with recognized options for that field
if (e.Button == MouseButtons.Right && grvFieldData.Columns[e.ColumnIndex].Name == "clmFieldName")
{
ContextMenu menu = new ContextMenu();
if (_supportedDataGrids.ContainsKey((cmbDataGrid.SelectedItem as DataGridFieldList).GridName))
{
// Loop through all the fields and add them to the context menu
List<string> fields = _supportedDataGrids[((cmbDataGrid.SelectedItem as DataGridFieldList).GridName)];
fields.Sort();
foreach (string field in fields)
menu.MenuItems.Add(new MenuItem(field));
// Make sure there is at least one field before displaying the context menu
if (menu.MenuItems.Count > 0)
menu.Show(this, e.Location, LeftRightAlignment.Right);
}
}
}
यह "सही ढंग से" काम करता है कोडित है, लेकिन संदर्भ मेनू प्रारूप में सबसे ऊपर दिखाई दे रहा है, नहीं माउस सूचक है, जहां। यदि मैं Show()
को फॉर्म के बजाय DataGridView
का उपयोग करने के लिए कॉल करता हूं, तो मेरे पास एक ही समस्या है लेकिन इसके बजाय यह ग्रिड के ऊपरी-बाएं कोने में दिखाई देता है, जहां माउस नहीं है।
विचित्र रूप से पर्याप्त है, अगर मैं इस घटना को MouseClick
ईवेंट (CellMouseclick
ईवेंट के बजाय) में बदलता हूं तो सबकुछ काम करता है और संदर्भ मेनू बिल्कुल ठीक होता है जहां माउस पॉइंटर होता है। इस विकल्प के साथ समस्या यह है कि उपयोगकर्ता वर्तमान में चुने गए सेल पर सही क्लिक नहीं कर सकता है, जिसका अर्थ है कि जब वे मेनू आइटम पर क्लिक करते हैं, तो चयनित सेल बदल दिया जाएगा और वह सेल नहीं जिस पर उन्होंने दायाँ क्लिक किया था।
क्या किसी के पास कोई संकेत है कि CellMouseClick
के साथ बनाए गए संदर्भ मेनू सही स्थान पर क्यों नहीं दिख रहे हैं?
हे, मेरा जवाब एक्स और वाई निर्देशांक जोड़ने के समूह के साथ थोड़ा और जटिल हो रहा था। काश मैं कर्सर के बारे में जानता हूं। कुछ हफ्ते पहले! सादगी के लिए +1! – Yetti
बहुत बढ़िया, यह एक आकर्षण की तरह काम किया! 'कर्सर। स्थिति' वह है जो मैं याद कर रहा था! – KallDrexx