這是在使用c#的WinForms中。 有10個單選按鈕,即汽車,自行車,火車,公共汽車等形式和與文本「XYZ」的標籤。所有在同一組框中。 我編寫了以下常用方法來隱藏單選按鈕上的文本。c#中的事件處理程序僅適用於新控件
private void Hide_radio(object sender, EventArgs e)
{
RadioButton rb = sender as RadioButton;
if (rb != null)
label1.Text="";
}
奇怪的是,調用事件在以下方式(剛下初始化組件),只適用於少數收音機,而不是所有。當我拖動一個新的收音機時,它就可以工作。 [嚴格拖放滴。沒有新的代碼添加或刪除。]
foreach (Control gb1c in groupBox1.Controls)
{
if (gb1c is RadioButton)
{
RadioButton rb = gb1c as RadioButton;
rb.CheckedChanged += new MouseEventHandler(Hide_radio);
break;
}
}
我已檢查designer.cs和所有無線電的代碼是相同的。因此,基本上,事件處理只處理少量和新的無線電,但不是全部。 爲什麼C#表現得如此幼稚......
「爲什麼C#表現得如此幼稚」 - 它只會做你告訴它做的事情。 – 2013-03-18 18:55:07
你不需要一個break語句你需要的是創建一個方法來檢查你需要什麼,而不是首先進行Casting我會親自檢查一下,看看Control是否也是一個特定類型,你也需要做一個方法遞歸調用..「爲什麼C#表現得如此幼稚?它不是語言,它可能是'用戶/編碼器' – MethodMan 2013-03-18 18:55:29