c# - एक आइटम पर एक सही क्लिक मेनू जोड़ना




winforms visual-studio (3)

मैं एक आइटम के लिए एक साधारण राइट-क्लिक मेनू के लिए थोड़ी देर खोज रहा हूं। उदाहरण के लिए, अगर मैं किसी तस्वीर पर राइट-क्लिक करता हूं तो मुझे अपने खुद के लेबल्स के साथ आने के लिए एक छोटा मेन्यू चाहिए: जोड़ें, निकालें आदि। अगर कोई मदद कर सकता है तो मैं सबसे ज्यादा मज़ेदार होगा।

तलाश के लिए धन्यवाद।

यहां पूरा कोड है:

    ContextMenu cm = new ContextMenu();             
    cm.MenuItems.Add("Item 1", new EventHandler(Removepicture_Click));             
    cm.MenuItems.Add("Item 2", new EventHandler(Addpicture_Click));              
    pictureBox1.ContextMenu = cm; 

https://code.i-harness.com


अपने फ़ॉर्म में एक संदर्भमेनू जोड़ें और फिर उसे कॉन्टेक्स्टमेनूस्ट्रिप के तहत नियंत्रण के गुणों में आवंटित करें उम्मीद है की यह मदद करेगा :)।

उम्मीद है की यह मदद करेगा:

ContextMenu cm = new ContextMenu();
cm.MenuItems.Add("Item 1");
cm.MenuItems.Add("Item 2");

pictureBox1.ContextMenu = cm;

यह इस प्रश्न का व्यापक उत्तर है। मैंने यह किया है क्योंकि यह पृष्ठ Google खोज परिणामों पर उच्च है और जवाब पर्याप्त विस्तार में नहीं आता है। यह पोस्ट मानता है कि आप विजुअल स्टूडियो सी # फ़ॉर्म का इस्तेमाल करने में सक्षम हैं। यह वीएस2012 पर आधारित है

  1. फ़ॉर्म पर एक प्रसंग मेन्यूस्ट्रिप को खींचकर प्रारंभ करें यह सिर्फ उसे शीर्ष बाएं कोने में रखेगा जहां आप अपने मेनू आइटम जोड़ सकते हैं और इसे फिट मानकर इसे नाम बदलें।

  2. आपको कोड देखना होगा और प्रपत्र पर खुद को एक घटना में दर्ज करना होगा। प्रश्न में आइटम के लिए एक माउस डाउन इवेंट बनाएं और उसके बाद इसके लिए एक राइट क्लिक इवेंट असाइन करें (मैंने "मेन्यूस्ट्रिप" ContextMenuStrip कहा है):

    private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
    {
    switch (e.Button)
        {
            case MouseButtons.Right:
            {
                rightClickMenuStrip.Show(this, new Point(e.X, e.Y));//places the menu at the pointer position
            }
            break;
        }
    }
  3. ईवेंट हैंडलर मैन्युअल रूप से form.designer पर निरुपित करें (आपको सिस्टम। Windows.Forms के लिए "उपयोग" जोड़ने की आवश्यकता हो सकती है; आप इसे अभी हल कर सकते हैं):

    this.pictureBox1.MouseDown += new MouseEventHandler(this.pictureBox1_MouseDown);
  4. इस बिंदु पर सभी की जरूरत है, प्रत्येक मेनू आइटम पर डबल क्लिक करें और प्रत्येक क्लिक ईवेंट के वांछित कार्यों को उसी तरह उसी तरीके से करें, जैसे आप किसी अन्य बटन के लिए करते हैं।

यह इस ऑपरेशन के लिए बुनियादी कोड है। आप स्पष्ट रूप से अपने कोडन प्रथाओं के साथ फिट करने के लिए इसे संशोधित कर सकते हैं।


इस के साथ घूमने के बाद, यह जानने के लिए उपयोगी है कि एक्स / ईआई अंक नियंत्रण के सापेक्ष हैं, इसलिए यदि (जैसा मैं था) आप एक सूचीई सूची को एक सूची दृश्य या कुछ इसी तरह जोड़ रहे हैं, तो आप इसे समायोजित करना चाहते हैं प्रपत्र की उत्पत्ति नीचे दिए गए उदाहरण में मैंने 20 से एक्स / वाई जोड़ा है ताकि मेनू दाहिनी ओर और कर्सर के नीचे दिखाई दे।

cmDelete.Show(this, new Point(e.X + ((Control)sender).Left+20, e.Y + ((Control)sender).Top+20));




right-click