2008-11-11 21 views
55

में ToggleButton सी # WinForms में एक टॉगल बटन बनाना संभव है? मुझे पता है कि आप चेकबॉक्स नियंत्रण का उपयोग कर सकते हैं और इसकी उपस्थिति संपत्ति को "बटन" पर सेट कर सकते हैं, लेकिन यह सही नहीं दिखता है। मैं इसे दबाए जाने पर, सफ़ेद नहीं दिखाना चाहता हूं। कोई विचार?सी # WinForms

उत्तर

0

मैंने ऑनपेंट और ऑनबैकग्राउंड पेंट घटनाओं को ओवरराइड करना समाप्त कर दिया और मैन्युअल रूप से बटन को मैन्युअल रूप से चित्रित किया। यह बहुत अच्छी तरह से काम किया।

+13

क्या आप कोड साझा कर सकते हैं? – Volatil3

0

आप कस्टम ग्राफिक्स और पिक्चरबॉक्स के साथ हमेशा अपना बटन कोड कर सकते हैं, हालांकि यह आपके उपयोगकर्ताओं के विंडोज थीम से मेल नहीं खाएगा।

8

FlatStyle संपत्ति की जांच करें। इसे "सिस्टम" पर सेट करना मेरे पर्यावरण में चेकबॉक्स को धक्का देता है।

+1

यह बॉक्स को अनचेक करते समय फ्लैट बनाता है। –

+0

यह मेरी मशीन पर चेक किए जाने पर अनचेक और सनकी होने पर उठाया जाता है (विस्टा विन 2000 की तरह दिखने के लिए बनाया गया - विंडोज क्लासिक थीम)। –

+0

आप सही हैं! मैं गलती से शैली के लिए पॉपअप पर था। मेरी गलती। –

2

यदि आप टूलस्ट्रिपकंटनर में इसे होस्ट करने में कोई फर्क नहीं पड़ता है तो आप टूलस्ट्रिप बटन नियंत्रण पर भी विचार कर सकते हैं। मुझे लगता है कि यह मूल रूप से दबाए गए और दबाए गए राज्यों का समर्थन कर सकता है।

120

तुम सिर्फ एक CheckBox का उपयोग करें और Button को अपनी उपस्थिति निर्धारित कर सकते हैं:

CheckBox checkBox = new System.Windows.Forms.CheckBox(); 
checkBox.Appearance = System.Windows.Forms.Appearance.Button; 
+0

अच्छा और सरल – fnc12

+0

लिंक मर चुका है ... – JRO

+0

[archive.org लिंक] का उपयोग करें (http://web.archive.org/web/20140214234414/http://osix.net/modules/article/?id=797) – rabejens

4

thers टॉगल बटन बनाने के लिए एक आसान तरीका है। मैं इसे vs2010 में परीक्षण करता हूं। यह एकदम सही है।

टूलस्ट्रिपबटन में "चेक" संपत्ति और "चेकऑनक्लिक" संपत्ति है। आप एक टॉगल बटन

tbtnCross.CheckOnClick = true; 

या

tbtnCross.CheckOnClick = false; 
    tbtnCross.Click += new EventHandler(tbtnCross_Click); 
    ..... 

    void tbtnCross_Click(object sender, EventArgs e) 
    { 
     ToolStripButton target = sender as ToolStripButton; 
     target.Checked = !target.Checked; 
    } 

भी, आप इस तरह टॉगल बटन सूची बना सकते हैं के रूप में कार्य करने के लिए उपयोग कर सकते हैं: बटन के लिए एक चेकबॉक्स रूप बदलना

 private void Form1_Load(object sender, EventArgs e) 
    { 
     arrToolView[0] = tbtnCross; 
     arrToolView[1] = tbtnLongtitude; 
     arrToolView[2] = tbtnTerrain; 
     arrToolView[3] = tbtnResult; 
     for (int i = 0; i<arrToolView.Length; i++) 
     { 
      arrToolView[i].CheckOnClick = false; 
      arrToolView[i].Click += new EventHandler(tbtnView_Click); 
     } 
     InitTree(); 
    } 

    void tbtnView_Click(object sender, EventArgs e) 
    { 
     ToolStripButton target = sender as ToolStripButton; 
     if (target.Checked) return; 
     foreach (ToolStripButton btn in arrToolView) 
     { 
       btn.Checked = false; 
       //btn.CheckState = CheckState.Unchecked; 
     } 
     target.Checked = true; 
     target.CheckState = CheckState.Checked; 

    } 
+0

यह एक नियंत्रण नहीं है। आप इसे जीयूआई पर कैसे एम्बेड करते हैं? – Bitterblue

+0

आप इसे टूलस्ट्रिप में उपयोग कर सकते हैं। – legendJSLC

-1

होगा समायोजन में आपको कठिनाई देता है। आप इसके आयामों को नहीं बदल सकते हैं क्योंकि इसका आकार आपके टेक्स्ट या छवि के आकार पर निर्भर करता है।

आप इस कोशिश कर सकते हैं: (1 करने के लिए पहले से प्रारंभ गिनती चर | पूर्णांक संख्या = 1)

private void settingsBtn_Click(object sender, EventArgs e) 
    { 
     count++; 

     if (count % 2 == 0) 
     { 
      settingsPanel.Show(); 
     } 
     else 
     { 
      settingsPanel.Hide(); 
     } 
    } 

यह बहुत आसान है, लेकिन यह काम करता है।

चेतावनी: यह अच्छी तरह से बटन है कि कभी-कभी इस्तेमाल किया जाता है (अर्थात सेटिंग) के साथ गिनती का मूल्य पूर्णांक/लंबे ओवरलोड हो गया है में जब एक से अधिक यह एप्लिकेशन की प्रक्रिया को बंद किए बिना क्षमता है इस्तेमाल किया काम करेंगे,। (चेक डेटा प्रकार पर्वतमाला: http://msdn.microsoft.com/en-us/library/s3f49ktz.aspx)

अच्छी खबर: आपको लगता है कि उपयोग 24/7 सभी वर्ष दौर के लिए नहीं है कोई एप्लिकेशन चला रहे हैं, मुझे लगता है कि यह उपयोगी है। महत्वपूर्ण बात यह है कि जब ऐप की प्रक्रिया समाप्त हो जाती है और आप इसे फिर से चलाते हैं, तो गिनती रीसेट हो जाएगी।

+2

क्यों न सिर्फ बुलियन ध्वज का उपयोग करें? 'वर्तमान में दृश्यमान =! वर्तमान में दृश्यमान; अगर (वर्तमान में दृश्यमान) {सेटिंग्सपैनेल। शो(); } ... ' –

+0

या आप '.AutoSize' को' false' पर सेट कर सकते हैं ... – Bob

5

इसके बारे में कैसे?

मान लें कि आपके पास System.Windows.Forms संदर्भित है।

var cbtnToggler = new CheckBox(); 
cbtnToggler.Appearance = Appearance.Button; 
cbtnToggler.TextAlign = ContentAlignment.MiddleCenter; 
cbtnToggler.MinimumSize = new Size(75, 25); //To prevent shrinkage! 

आशा इस मदद करता है;)

0

उपयोग करता है, तो आदेश की स्थिति की जांच और एक टॉगल बटन के रूप में काम करने देने के लिए

private void Protection_ON_OFF_Button_Click(object sender, EventArgs e) 
     { 

      if (FolderAddButton.Enabled == true) 
      { 
       FolderAddButton.Enabled = false; 
      } 
      else 
      { 
       FolderAddButton.Enabled = true; 
      } 
     } 
0

यह मेरा सरल कोड है मुझे आशा है कि यह आप

मदद कर सकते हैं
private void button2_Click(object sender, EventArgs e) 
    { 
     if (button2.Text == "ON") 
     { 
      panel_light.BackColor = Color.Yellow; //symbolizes light turned on 

      button2.Text = "OFF"; 
     } 

     else if (button2.Text == "OFF") 
     { 
      panel_light.BackColor = Color.Black; //symbolizes light turned off 

      button2.Text = "ON"; 
     } 
    } 
+0

यह एक बुरा जवाब नहीं था, निश्चित रूप से चेकबॉक्स बटन के रूप में उपन कर सकता है, हालांकि चेकबॉक्स में सीमाएं हैं (कोई कस्टम आकार को स्वतंत्र नहीं कर सकता पाठ का आकार), तो ऊपर उठाना। – user3800527

0

वेल जॉन टैकबरी आप मेट्रोयूआई फ्रेमवर्क का उपयोग करने के लिए उपयोग कर सकते हैं ले बटन यह कई अन्य नियंत्रण प्रदान करता है जो विंडोज 8 की तरह अलग यूआई दिखते हैं।

आप इसे कम से कम एक बार कोशिश कर सकते हैं।

का उपयोग कैसे करें सिर्फ इस देखते हैं, https://www.youtube.com/watch?v=Ryxew9cgkZA

मुझे आशा है कि यह उपयोगी है।