मेरे सी # एप्लिकेशन में मैं एक संदर्भ मेनू प्रदर्शित करना चाहता हूं, लेकिन यदि संदर्भ में SHIFT कुंजी को दबाया जा रहा है तो मैं मेनू में विशेष विकल्प जोड़ना चाहता हूं मेनू खोला गया हैसी # - यह पता लगाना कि कोई संदर्भ मेनू खोलते समय SHIFT कुंजी आयोजित की जाती है
मैं वर्तमान में SHIFT कुंजी की जांच के लिए GetKeyState
API का उपयोग कर रहा हूं। यह मेरे कंप्यूटर पर ठीक काम करता है लेकिन गैर-अंग्रेजी विंडोज़ वाले उपयोगकर्ता कहते हैं कि यह उनके लिए बिल्कुल काम नहीं करता है।
मैंने यह भी पढ़ा कि Win32 API में जब कोई संदर्भ मेनू खोला जाता है तो मेनू में इंगित एक ध्वज EXTENDEDVERBS
दिखाना चाहिए। Opening
ईवेंट के लिए सी # EventArgs
में EXTENDEDVERBS
या किसी भी संशोधक कुंजी दबाए जाने वाले एक प्रॉपर्टी (जो मैं बता सकता हूं) में शामिल नहीं है।
// SHIFT KEY is being held down
if (Convert.ToBoolean(GetKeyState(0x10) & 0x1000))
{
_menuStrip.Items.Add(new ToolStripSeparator());
ToolStripMenuItem log = new ToolStripMenuItem("Enable Debug Logging");
log.Click += new EventHandler(log_Click);
log.Checked = Settings.Setting.EnableDebugLogging;
_menuStrip.Items.Add(log);
}
तो GetKeyState यह ऐसा करने का सही तरीका नहीं है, मेरे कोड को ठीक से दबाया जा रहा SHIFT कुंजी का पता लगाने है:
यहाँ कोड मैं अब "Opening
" घटना के अंदर उपयोग कर रहा हूँ है?
, मेरे कोड में ContextMenu के माता-पिता एक UserControl है और ModifierKeys संपत्ति या तो UserContr लिए उपलब्ध नहीं है ओएल या ContextMenu ऑब्जेक्ट के लिए। –
@ क्रिस - जैसा कि जेरेड कहते हैं कि यह स्थिर है। मैंने msdn –
के लिंक के साथ अपना उत्तर अपडेट किया मैंने इसे नोटिस नहीं किया। मैं सोच रहा था कि यह एक उदाहरण संपत्ति थी। मैं इसका परीक्षण करूंगा। –