WinForms ContextMenu में विभाजक कैसे जोड़ें?


103

मेरे नियंत्रण के अंदर, मेरे पास है:

ContextMenu = new ContextMenu();
ContextMenu.MenuItems.Add(new MenuItem("&Add Item", onAddSpeaker));
ContextMenu.MenuItems.Add(new MenuItem("&Edit Item", onEditSpeaker));
ContextMenu.MenuItems.Add(new MenuItem("&Delete Item", onDeleteSpeaker));
ContextMenu.MenuItems.Add( ??? );
ContextMenu.MenuItems.Add(new MenuItem("Cancel"));

इस ContextMenu में एक जुदाई लाइन कैसे जोड़ें?


नामों के सामने 'और' का क्या उपयोग है?
गेरबेन लिम्बर्ग

3
@GerbenLimburg: 'और' आपको शॉर्टकट कुंजी (इसे " mnemonic " कहा जाता है ) डिज़ाइन करने की अनुमति देता है जो उपयोगकर्ता के लिए उपलब्ध होगा (Alt के साथ संयुक्त)।
ओटियल

जवाबों:


225

मेरा मानना ​​है कि यह सिर्फ एक डैश है:

ContextMenu.MenuItems.Add("-");

यह विंडोज में कई खराब दस्तावेजों में से एक है। मुझे कुछ महीने पहले ऐसा करने की जरूरत थी। मुझे याद आया कि मैं इसे Win32 में कर सकता हूं, लेकिन सिंटैक्स को याद नहीं कर सकता। मैंने इसे खोजने के लिए कुछ पुरानी VC + 6 फ़ाइलों को खींच कर समाप्त कर दिया। वैसे, मैं अभी भी कभी-कभी कुछ चीजों के लिए "द पेट्ज़ोल्ड बुक" का उल्लेख करता हूं। वाह, मैं बूढ़ा महसूस कर रहा हूँ ...
ब्रैड ब्रूस

24
निश्चित रूप से यह अधिक पठनीय है ContextMenu.Items.Add(new ToolStripSeparator()); देखने गेब्रियल के जवाब
MarkJ

9
@MarkJ, The ContextMenu के पास अब आइटम प्रॉपर्टी नहीं है। ToolStripSeperator () भी ContextMenu.Items.Add के लिए एक वैध तर्क नहीं है।
साइरफ

3
ध्यान दें कि आप विजुअल स्टूडियो विंडोज फॉर्म डिजाइनर में मेनू डिजाइनर के "टाइप यहां" प्रविष्टि क्षेत्र में हाइफ़न दर्ज करके यह नेत्रहीन कर सकते हैं। डिजाइनर में विभाजक तुरंत दिखाई देगा।
बुग्गीबॉय

48

यह सिर्फ डैश के साथ-साथ काम करता है, और मुझे संदेह है कि Winforms डैश को टूलस्ट्रिपसेपरेटर में अनुवाद करेगा। मुझे लगता है कि यह समाधान किसी ऐसे व्यक्ति के लिए अधिक स्पष्ट है जिसे कोड को बनाए रखना है।

yourContextMenu.Items.Add(new ToolStripSeparator());

5
.Net 2 winforms ContextMenu वर्ग के पास एक आइटम गुण नहीं है।
एंड्रयूज

6
यह केवल एक ContextMenuStrip के साथ संभव है और एक ContextMenu के साथ नहीं।
गेरबेन लिम्बर्ग जू

1
और आप कर सकते हैं yourContextMenu.Items.Insert(3, new ToolStripSeparator());, लेकिन आप Insertएक डैश नहीं कर सकते "-"।
ओटीएल

1
परफेक्ट बहुत बहुत धन्यवाद
गरुड़ प्रसाद के


7

यदि आप डिज़ाइनर का उपयोग कर रहे हैं, तो एक एकल हाइफ़न रखें "-" उसी तरह जैसे आप अपने मेनू आइटम को नाम देंगे। एंट्री मारने के बाद, विभाजक बनाया जाएगा।



1

क्षैतिज विभाजक शांत हैं, लेकिन क्या होगा यदि आप इसके बजाय एक ऊर्ध्वाधर विभाजक चाहते हैं?

खैर, चिंता मत करो - तुम एक हो सकता है!

BarBreakसंपत्ति सेट करें जिस trueपर MenuItemसेपरेटर के बाद पहला होना चाहिए:

var item = new MenuItem(text: "Settings", onClick: SomeFunction) { BarBreak = true };

यहां छवि विवरण दर्ज करें

आइटम को एक MenuItemsसंग्रह में जोड़ने के लिए yourContextMenu.MenuItems.Add(item):।


0

शायद विजुअल स्टूडियो के बाद के संस्करणों में उन्होंने इसे सरल बना दिया। मैं वीएस 2012 का उपयोग कर रहा हूं। आप फॉर्म डिजाइनर के माध्यम से एक विभाजक जोड़ सकते हैं। 1) एक MenuStrip चुनें / बनाएँ। 2) "टाइप हियर" पर, राइट माउस। 3) "इन्सर्ट" चुनें। 4) "विभाजक" का चयन करें। 5) नए विभाजक को उस पाठ पर खींचें जिसे आप ऊपर रखना चाहते हैं। किया हुआ।


0

ContextMenuहै एक निर्माता जो की एक सरणी प्राप्त करता है MenuItemवस्तुओं। कहने की जरूरत नहीं है, आप उस सरणी में स्ट्रिंग नहीं जोड़ सकते। हालाँकि, आप जोड़कर एक सेपरेटर प्राप्त कर सकते हैं new MenuItem("-"):

    var contextMenu = new ContextMenu(new[]
    {
        timerMenuItem,
        keypressMenuItem,
        new MenuItem("-"), // Seperator
        new MenuItem(text: "Exit", onClick: (sender, args) => Application.Exit())
    });
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.