2016-12-13 22 views
0

請仔細閱讀問題,因爲它不是重複的。 我有一個winforms應用程序我C#巫婆有一個tabcontrol有3個選項卡。 每個標籤有4個單選按鈕。 如果我運行該應用程序,單選按鈕在相同的選項卡內工作正常,但是當我選擇另一個選項卡時,選擇將保留在第一個選項卡中。 我試圖在更改標籤時清除所有選中的單選按鈕,但由於某些原因它不起作用。 的代碼使用方法是:選擇不同tabcontrol時的單選按鈕

private void UncheckLayouts(TabPage activePage) 
{ 
    foreach (Control control in tabControl1.Controls) 
    { 
     if (control is RadioButton) 
     { 
      RadioButton rb = control as RadioButton; 
      rb.Checked = false; 
     } 
    } 
} 

private void radioButton1_Click(object sender, EventArgs e) 
{ 
    UncheckLayouts(tabControl1.SelectedTab); 
} 

private void radioButton2_Click(object sender, EventArgs e) 
{ 
    UncheckLayouts(tabControl1.SelectedTab); 
} 
... 

我想這樣太:

private void tabControl1_Deselecting(object sender, TabControlCancelEventArgs e) { 
    foreach (var ctrl in e.TabPage.Controls) { 
     if (ctrl is RadioButton) { 
      RadioButton tb = ctrl as RadioButton; 
      rb.Checked = false; 
     } 
    } 
} 

編輯: 新代碼。

public Form2() 
{ 
    InitializeComponent(); 
    tabControl1.Selected += TabControl1_Selected; 
} 
private void TabControl1_Selected(object sender, TabControlCancelEventArgs e) 
{ 
    foreach (var ctrl in e.TabPage.Controls) 
    { 
     if (ctrl is RadioButton) 
     { 
      RadioButton tb = ctrl as RadioButton; 
      tb.Checked = false; 
     } 
    } 
} 

但是沒有解決方案。 所有單選按鈕都與設計師一起添加到每個選項卡。

任何人都可以幫忙。 由於提前,

回答

1

您可以使用下面的代碼,我測試了一下它工作正常

private void InitializeComponent(){ 
      ........ 
tabControl1.Selected += TabControl1_Selected; 
} 



private void TabControl1_Selected(object sender, TabControlEventArgs e) 
{ 
    foreach (var ctrl in e.TabPage.Controls) 
    { 
     if (ctrl is RadioButton) 
     { 
      RadioButton tb = ctrl as RadioButton; 
      tb.Checked = false; 
     } 
    } 
} 
+0

嗨, 感謝您的幫助。 我試過你的代碼,但在行'tabControl1.Selected + = TabControl1_Selected;''沒有重載'TabControl1_Selected'匹配委託'TabControlEventHandler'\t' – septaug

+0

'我沒有超載我的文章與您的解決方案,是嗎? 我仍然得到'tabControl1.Selected + = TabControl1_Selected;' – septaug

+0

錯誤,我很抱歉,我複製了錯誤的代碼,我已經修復了我的代碼 –