[英]C# how can I uncheck dynamically created radio buttons?
我正在動態創建表單中的一些單選按鈕,我希望用戶能夠取消選擇它們。 用戶的選項應該選擇一個,或者不選擇(使用安全性比單選框更安全)。 我嘗試使用EventHandler並創建一個事件,但運氣不佳,使其無法正常工作。
這是我要做的按鈕:
private void makeRadioButtons(string size, Panel pnl)
{
for (int i = 0; i < 2; i++)
{
RadioButton btn = new RadioButton();
btn.AutoSize = true;
btn.Name = i;
btn.Text = i;
btn.Location = new Point(100*i, 0);
btn.Click += new EventHandler(radioHandler);
pnl.Controls.Add(btn);
}
}
這是我的事件處理程序:
private void radioHandler(object sender, EventArgs e)
{
RadioButton rdo = sender as RadioButton;
if(rdo.Checked)
{
rdo.Checked = false;
}
else
{
rdo.Checked = true;
}
}
編譯時會得到按鈕,但是無法選擇或取消選擇它們。 我感覺自己已經接近了,但是我無法弄清楚我在做什么錯。
默認情況下會自動檢查RadioButtons。 您可以通過在創建它們時將其AutoCheck
屬性設置為false
來避免這種情況。
然后,您需要像這樣更改處理程序:
private void radioHandler(object sender, System.EventArgs e)
{
RadioButton rbt = (RadioButton)sender;
if (rbt.Checked)
{
rbt.Checked = false;
return;
}
rbt.Checked = true;
foreach (RadioButton r in pnl.Controls.OfType<RadioButton>())
if (r != rbt) r.Checked = false;
}
因此,如果單擊的按鈕被選中,則未選中。 如果未選中,則將其選中,然后取消選中所有其他復選框(這是必需的,因為我們將AutoCheck
設置為false
)。
麻煩的是您的事件處理程序代碼。
用戶單擊時,單選按鈕會自動選中/取消選中。
您的代碼則相反!
編輯
只需要刪除處理程序即可。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.