ContextMenu
नियंत्रण का उपयोग करके ऐसा करने का कोई अच्छा तरीका नहीं है। वह देशी Win32 मेनू के आसपास सिर्फ एक रैपर है, यही कारण है कि यह इतना बेहतर दिखता है। यह ओएस एपीआई का उपयोग करके खींचा गया है, बस अन्य सभी अनुप्रयोगों में मेनू की तरह।
तुलना करें कि ContextMenuStrip
नियंत्रण पर, जो सी # कोड में ढांचे द्वारा पूरी तरह से तैयार किया गया है। यह पहली बार रिलीज होने पर सुपर कूल (मुझे लगता है) वापस देखा गया, जब विंडोज़ और ऑफिस एक्सपी अलमारियों पर नवीनतम उत्पाद थे। जब विंडोज विस्टा लुढ़का, तो यह बेहद अप्रचलित हो गया। इसका एकमात्र लाभ यह है कि है कि आपके पास मेनू पर बहुत अधिक जुर्माना नियंत्रण है। उदाहरण के लिए, आप मेनू में कस्टम नियंत्रण होस्ट कर सकते हैं, और जब आप किसी आइटम पर क्लिक करते हैं तो आप मेनू को बंद होने से रोक सकते हैं। मूल Win32 मेनू के लिए समर्थन नहीं है।
बेशक, यह सिर्फ एक निरीक्षण या आकस्मिक चूक से अधिक है। उपयोगकर्ता ने पहले से ही कुछ चुनने के बाद एक खुला मेनू खोलने की इच्छा एक अच्छा संकेत है कि आपका डिज़ाइन गलत है। ध्यान रखें कि एक संदर्भ मेनू का उद्देश्य उपयोगकर्ता को प्रासंगिक रूप से प्रासंगिक विकल्पों तक तेजी से पहुंच देना है। उन्हें बस इतना करना है कि राइट-क्लिक करें (या उनके कीबोर्ड पर एक विशेष बटन दबाएं), और वे सीधे जो कुछ भी काम कर रहे हैं या पूरा करने की कोशिश कर रहे हैं, उससे संबंधित विकल्पों का मेनू देख सकते हैं। एक नियमित मेनू की तरह, वे एक विकल्प का चयन करने में सक्षम होना चाहिए और मेनू दूर जाना है।
विंडोज़ में, सभी मेनू "ऑटो-क्लोज़" हैं। यदि मेनू लगातार होना चाहिए, तो यह बिल्कुल मेनू नहीं होना चाहिए। एक टूलबार, एक साइड बार, या इसके बजाय कुछ प्रकार के कस्टम नियंत्रण का उपयोग करने पर विचार करें। उनको दूर जाने के लिए डिज़ाइन नहीं किया गया है जब उनके विकल्पों में से एक चुना जाता है, और इसलिए वे संबंधित विकल्पों को दिखाने के लिए आदर्श हैं जो हमेशा दिखाई देनी चाहिए।
यदि कोई विकल्प चुनने के बाद पर कोई संदर्भ मेनू नहीं गया, तो मैं एक बग होने पर विचार करता हूं। कम से कम, मुझे लगता है कि मेरा चयन "लेना" नहीं था और इसे फिर से क्लिक करने का प्रयास करें।
मैं क्यों WPF टीम अपने संदर्भ मेनू के लिए एक StaysOpen
विकल्प प्रदान करने का निर्णय लिया नहीं थोड़ी सी भी सुराग है, या क्यों वे पहली जगह में अपने स्वयं के संदर्भ मेनू वर्ग दुबारा लिखा। क्या वे WinForms टीम से कुछ नहीं सीख चुके हैं जो पहले से ही एक ही काम कर चुके हैं?
ContextMenu
नियंत्रण (और इसलिए मूल मेनू) के साथ आप जो भी पूछ रहे हैं, उसे करने का एकमात्र तरीका है जो आप वर्णन करते हैं- मेनू की पिछली स्थिति को संग्रहीत करते हैं, और कमांड का चयन करने के बाद , अपने पिछले स्थान में पॉप-अप मेनू को फिर से दिखाएं। झिलमिलाहट के लिए आप जो भी इलाज करते हैं (उदाहरण के लिए, स्क्रीन को ठंडा करना और संदर्भ मेनू को तब तक दबा देना जब तक कि संदर्भ मेनू को पुनर्स्थापित नहीं किया जाता है) लगभग बीमारी से भी बदतर होने की गारंटी है।
मैं वापस गया और मेरे अन्य सवालों से कुछ जवाब स्वीकार कर लिया। जब मैंने उन्हें बनाया, मुझे नहीं पता था कि आपको ऐसा करना चाहिए। – Aidan
कोई समस्या नहीं है। सही उत्तरों को स्वीकार करना हमेशा अच्छा होता है। इस तरह समुदाय प्रतिष्ठा बना सकता है। – CodeLikeBeaker