[英]How to programmatically uncheck a checkbox in a checkedListBoxin a c# form?
[英]C# Checkbox-Dialog How to uncheck
我在C#中有一個Windows窗體對話框,其中顯示了字典中每個元素的復選框。 對話框返回一個列表,其中包含所有選定的Elements(復選框)。 但是我注意到,如果我選擇一個復選框,然后再次取消選中它,則該元素仍在返回的選定元素列表中。 我怎樣才能解決這個問題? 我的對話框如下所示:
public SelectDialog(Dictionary<string, string> Result)
{
int left = 45;
int idx = 0;
InitializeComponent();
for (int i = 0; i < Result.Count; i++)
{
CheckBox rdb = new CheckBox();
rdb.Text = Result.Values.ElementAt(i).Equals("") ? Result.Keys.ElementAt(i) : Result.Values.ElementAt(i);
rdb.Size = new Size(100, 30);
this.Controls.Add(rdb);
rdb.Location = new Point(left, 70 + 35 * idx++);
if (idx == 3)
{
idx = 0; //Reihe zurücksetzen
left += rdb.Width + 5; // nächste Spalte
}
rdb.CheckedChanged += (s, ee) =>
{
var r = s as CheckBox;
if (r.Checked)
this.selectedString.Add(r.Text);
};
}
}
//Some more Code
}
根據評論:
如果未選中引發事件,則需要從列表中刪除項目,我認為您必須檢查已添加的項目以避免重復,如果存在則刪除項目。 因此處理程序將如下所示:
rdb.CheckedChanged += (s, ee) =>
{
var r = s as CheckBox;
var itemIndex = this.selectedString.IndexOf(r.Text)
if (r.Checked && itemIndex == -1)
this.selectedString.Add(r.Text);
else if(!r.Checked && itemIndex != -1)
{
this.selectedString.RemoveAt(itemIndex);
}
};
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.