दिलचस्प पोस्ट
क्यों मोंगोज हमेशा मेरे संग्रह नाम के अंत में एक जोड़ता है नरम कीबोर्ड Android दिखाए जाने पर लेआउट को कैसे ले जाएं जावास्क्रिप्ट (.js) फ़ाइलों के अंदर PHP शामिल करें फ़ाइलों की बड़ी मात्रा वाली निर्देशिका से फ़ाइलें पुनर्प्राप्त करना लॉगिंग के लिए HTTP सर्वलेट प्रतिक्रिया आउटपुट स्ट्रीम सामग्री को पढ़ने और प्रतिलिपि कैसे करें <: <ऑपरेटर में स्कला Std :: iterator के लिए तैयार किया जा रहा है Deprecated जा रहा है मैं विंडोज़ एपीआई का उपयोग कर इसे सक्रिय करने के बिना विंडो में प्रमुख स्ट्रोक कैसे भेजूं? Gradle DSL विधि नहीं मिला: 'संकलन ()' प्लोटिंग कॉन्फिडेंस अंतराल IE8 में AJAX के परिणामों का अप्रत्याशित कैशिंग मैं javascript associative सरणी से ऑब्जेक्ट कैसे निकालूं? किसी संख्या के विभाजन उत्पन्न करना कुशलतापूर्वक लिंक किए गए सूची से यादृच्छिक तत्वों का एक सेट चुनना AngularJS – मैं एक पूर्ण पृष्ठ लोड के साथ एक रीडायरेक्ट कैसे कर सकता / सकती हूं?

समूह में कौन से रेडियो बटन की जांच की जाती है?

WinForms का उपयोग करना; समूह के लिए चेक किए गए रेडियोबटन को ढूंढने का कोई बेहतर तरीका है? मुझे लगता है कि नीचे दिए गए कोड के लिए आवश्यक नहीं होना चाहिए। जब आप एक अलग रेडियोबटन की जांच करते हैं तो यह जानता है कि किसको अनचेक करना है … तो यह जानना चाहिए कि किसकी जाँच की गई है मैं अगर बयान (या एक स्विच) की बहुत सारी जानकारी बिना उस जानकारी को कैसे खींचूँ?

RadioButton rb = null; if (m_RadioButton1.Checked == true) { rb = m_RadioButton1; } else if (m_RadioButton2.Checked == true) { rb = m_RadioButton2; } else if (m_RadioButton3.Checked == true) { rb = m_RadioButton3; } 

वेब के समाधान से एकत्रित समाधान "समूह में कौन से रेडियो बटन की जांच की जाती है?"

आप LINQ का उपयोग कर सकते हैं:

 var checkedButton = container.Controls.OfType<RadioButton>() .FirstOrDefault(r => r.Checked); 

ध्यान दें कि इसके लिए सभी रेडियो बटन सीधे एक ही कंटेनर (जैसे, पैनल या फॉर्म) में हैं, और यह कि कंटेनर में केवल एक ही समूह है। यदि ऐसा मामला नहीं है, तो आप प्रत्येक समूह के लिए List<RadioButton> अपने कन्स्ट्रक्टर में बना सकते हैं, फिर सूची लिखें। list.FirstOrDefault(r => r.Checked)

आप एक हैंडलर के विरुद्ध सभी बटनों के चेक-ईेन्ट्स को तार कर सकते हैं। वहां आप आसानी से सही चेकबॉक्स प्राप्त कर सकते हैं

 // Wire all events into this. private void AllCheckBoxes_CheckedChanged(Object sender, EventArgs e) { // Check of the raiser of the event is a checked Checkbox. // Of course we also need to to cast it first. if (((RadioButton)sender).Checked) { // This is the correct control. RadioButton rb = (RadioButton)sender; } } 

बिना LINQ के लिए:

 RadioButton GetCheckedRadio(Control container) { foreach (var control in container.Controls) { RadioButton radio = control as RadioButton; if (radio != null && radio.Checked) { return radio; } } return null; } 

ओ.पी. ने रेडियोबूटन बाय ग्रुप को चेक करना चाहता था। जबकि @Slaks का जवाब उत्कृष्ट है, यह वास्तव में ओपी के मुख्य प्रश्न का जवाब नहीं देता है @Slaks उत्तर में सुधार करने के लिए, बस LINQ एक कदम आगे ले लो।

मेरे अपने कामकाजी कोड से यह एक उदाहरण है प्रति सामान्य WPF, मेरे रेडियोबुटन्स को अन्य प्रकार के नियंत्रणों के एक समूह के साथ एक ग्रिड ("माइग्रिड" नामित) में शामिल किया गया है। मेरे पास ग्रिड में दो अलग-अलग रेडियोबटन समूह हैं।

किसी विशेष समूह से चेक किए गए रेडियोबटोन प्राप्त करने के लिए:

 List<RadioButton> buttons = myGrid.Children.OfType<RadioButton>().ToList(); RadioButton rbTarget = radioButtons .Where(r => r.GroupName == "GroupName" && r.IsChecked) .Single(); 

यदि आपके कोड में रेडियोबुटन्स की जांच की संभावना नहीं है, तो "सिंगलऑर डीफॉल्ट ()" का उपयोग करें। (यदि मैं त्रिकोणीय-राज्य बटन का उपयोग नहीं कर रहा हूं, तो मैं हमेशा एक बटन "इस्चैक्ड" को एक डिफ़ॉल्ट चयन के रूप में सेट करता हूं।)

आप अपने सभी रेडियोबुटन्स के लिए चेक- चेंड वाले ईवेंट का उपयोग कर सकते हैं। Sender अनियंत्रित और चेक किए गए रेडियोबुटन्स होंगे।

आप रेडियोबटन के अभिभावक के पुनरावृत करने के लिए एक्सटेंशन विधि का उपयोग कर सकते हैं। कंट्रोल संग्रह। यह आपको एक ही दायरे में अन्य रेडियोबुटन्स की क्वेरी करने की अनुमति देता है। दो एक्सटेंशन विधियों का उपयोग करके, आप पहले निर्धारित कर सकते हैं कि समूह में कोई रेडियोबुटन्स चुने गए हैं या नहीं, फिर चयन प्राप्त करने के लिए दूसरे का उपयोग करें। रेडियो बटॉन टैग फ़ील्ड का उपयोग एक समूह में प्रत्येक रेडियो बटन की पहचान करने के लिए किया जा सकता है:

  public static int GetRadioSelection(this RadioButton rb, int Default = -1) { foreach(Control c in rb.Parent.Controls) { RadioButton r = c as RadioButton; if(r != null && r.Checked) return Int32.Parse((string)r.Tag); } return Default; } public static bool IsRadioSelected(this RadioButton rb) { foreach(Control c in rb.Parent.Controls) { RadioButton r = c as RadioButton; if(r != null && r.Checked) return true; } return false; } 

यहाँ एक विशिष्ट उपयोग पैटर्न है:

 if(!MyRadioButton.IsRadioSelected()) { MessageBox.Show("No radio selected."); return; } int selection = MyRadioButton.GetRadioSelection; 

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

सी # में मेरा हैक का उपयोग मूल्य निर्धारित करने के लिए टैग का उपयोग करना है, और जब मैं समूह से एक चयन करता हूं, तो मैंने चयनित रेडियोबूटन के टैग का मूल्य पढ़ा। इस उदाहरण में, दिशा समूह एक ऐसा समूह है जिसमें मेरे पास "कोई नहीं" और "पूर्वोत्तर", "एसई", "एनडब्ल्यू" और "एसडब्ल्यू" के साथ चार चार रेडियो बटन हैं, जैसे कि चार अन्य रेडियोबूटों के टैग।

मैंने चेक बटन के मूल्य पर कब्जा करने के लिए एक बटन का इस्तेमाल किया है, क्योंकि क्योंकि सभी बटनों के एक ईवेंट हैंडलर को निर्दिष्ट करते हैं, क्योंकि प्रत्येक बटन को आग लगने का कारण बनता है, क्योंकि एक बदलाव उन सभी को बदलता है। इसलिए प्रेषक का मान हमेशा समूह में पहला रेडियोबटन होता है। इसके बजाय, मैं इस पद्धति का उपयोग करता हूं जब मुझे यह पता लगाना होगा कि कौन सा एक चुना गया है, मैं प्रत्येक रेडियोबटन की टैग प्रॉपर्टी में पुनर्प्राप्त करना चाहता हूं।

  private void ShowSelectedRadioButton() { List<RadioButton> buttons = new List<RadioButton>(); string selectedTag = "No selection"; foreach (Control c in directionGroup.Controls) { if (c.GetType() == typeof(RadioButton)) { buttons.Add((RadioButton)c); } } var selectedRb = (from rb in buttons where rb.Checked == true select rb).FirstOrDefault(); if (selectedRb!=null) { selectedTag = selectedRb.Tag.ToString(); } FormattableString result = $"Selected Radio button tag ={selectedTag}"; MessageBox.Show(result.ToString()); } 

एफवाईआई, मैंने यह परीक्षण किया है और मेरे काम में इसका इस्तेमाल किया है

एक छोटा सा सिक्का

अगर आप चयन को फाइल या किसी और को सहेजना चाहते हैं और इसे बाद में फोन करना चाहते हैं, तो मैं क्या करूं

 string[] lines = new string[1]; lines[0] = groupBoxTes.Controls.OfType<RadioButton>() .FirstOrDefault(r => r.Checked).Text; File.WriteAllLines("Config.ini", lines); 

फिर इसे साथ कॉल करें

 string[] ini = File.ReadAllLines("Config.ini"); groupBoxTes.Controls.OfType<RadioButton>() .FirstOrDefault(r => (r.Text == ini[0])).Checked = true; 

चेक-चेंजेडविस्तार तारों के अलावा रेडियो बटन के बीच अंतर करने के लिए "टैग" प्रॉपर्टी को नियंत्रित किया जा सकता है … एक (स्पेगेटी कोड) विकल्प "TabIndex" प्रॉपर्टी होगा; पी

यदि आप नियंत्रण के अंदर चयनित रेडियो बटन का सूचक प्राप्त करना चाहते हैं तो आप इस विधि का उपयोग कर सकते हैं:

 public static int getCheckedRadioButton(Control c) { int i; try { Control.ControlCollection cc = c.Controls; for (i = 0; i < cc.Count; i++) { RadioButton rb = cc[i] as RadioButton; if (rb.Checked) { return i; } } } catch { i = -1; } return i; } 

उदाहरण उपयोग:

 int index = getCheckedRadioButton(panel1); 

यह कोड अच्छी तरह से परीक्षण नहीं किया जाता है, लेकिन ऐसा लगता है कि सूचकांक क्रम बाएं से दाएं और ऊपर से नीचे तक है, जैसे पाठ पढ़ना यदि कोई रेडियो बटन नहीं मिलता है, तो विधि -1 देता है

अद्यतन: यह पता चला कि नियंत्रण में कोई रेडियो बटन नहीं है, तो मेरा पहला प्रयास काम नहीं करता। मैंने इसे ठीक करने के लिए एक प्रयास और पकड़ ब्लॉक जोड़ा, और अब विधि काम करने लगता है