[英]populating textbox based on checkbox.checked value of numerous checkboxes
我有一個包含10個以上復選框的組框。 我想構建一個字符串,該字符串將所有選中的Checkbox.Text連接起來。
當然,無論何時任何復選框的選中狀態更改,都將需要重建字符串。 我該怎么做呢?
注意:由於復選框已被選中/未選中,這需要即時進行。
這就是我的想法,但是我覺得有一種更好的方法可以做到這一點-而且我不確定在未選中項目時如何刪除字符串。
有什么想法嗎?
private void CheckBox_CheckedChanged(System.Object sender, System.EventArgs e)
{
if (((CheckBox)sender).Checked)
{
switch (((CheckBox)sender).Name)
{
case "CheckBox1":
sb = sb + "This is checkbox 1." + "\n";
break;
case "CheckBox2":
sb = sb + "This is checkbox 2." + "\n";
break;
case "CheckBox3":
sb = sb + "This is checkbox 3." + "\n";
break;
case "CheckBox4":
sb = sb + "This is checkbox 4." + "\n";
break;
case "CheckBox5":
sb = sb + "This is checkbox 5." + "\n";
break;
case "CheckBox6":
sb = sb + "This is checkbox 6." + "\n";
break;
case "CheckBox7":
sb = sb + "This is checkbox 7." + "\n";
break;
case "CheckBox8":
sb = sb + "This is checkbox 8." + "\n";
break;
case "CheckBox9":
sb = sb + "This is checkbox 9." + "\n";
break;
case "CheckBox10":
sb = sb + "This is checkbox 10." + "\n";
break;
}
}
else
{
}
}
您可以執行以下操作,假設復選框名稱的格式為“ CheckBox#”:
private void checkBox_CheckedChanged(object sender, EventArgs e)
{
var checkboxes = from c in groupBox1.Controls.OfType<CheckBox>()
where c.Checked
orderby int.Parse(c.Name.Substring(8))
select c;
sb.Clear();
foreach (var cb in checkboxes)
{
sb.Append(string.Format("This is checkbox {0}", cb.Name.Substring(8)));
sb.Append(Environment.NewLine);
}
textBox1.Text = sb.ToString();
}
如果您不想擔心復選框名稱的格式,則可以使用AlphanumComparator ,盡管您必須對源進行一些小的更改才能使其通用:
AlphanumComparator<string> comparator = new AlphanumComparator<string>();
var checkboxes = (from c in groupBox1.Controls.OfType<CheckBox>()
where c.Checked
select c).OrderBy(c => c.Name, comparator);
下面的代碼有效:但是,我仍然想聽聽是否有更好的方法來做到這一點?
private void CheckBox_CheckedChanged(System.Object sender, System.EventArgs e)
{
if (((CheckBox)sender).Checked)
{
switch (((CheckBox)sender).Name)
{
case "CheckBox1":
sb.Append("This is checkbox 1.\r\n");
break;
case "CheckBox2":
sb.Append("This is checkbox 2.\r\n");
break;
case "CheckBox3":
sb.Append("This is checkbox 3.\r\n");
break;
case "CheckBox4":
sb.Append("This is checkbox 4.\r\n");
break;
case "CheckBox5":
sb.Append("This is checkbox 5.\r\n");
break;
case "CheckBox6":
sb.Append("This is checkbox 6.\r\n");
break;
case "CheckBox7":
sb.Append("This is checkbox 7.\r\n");
break;
case "CheckBox8":
sb.Append("This is checkbox 8.\r\n");
break;
case "CheckBox9":
sb.Append("This is checkbox 9.\r\n");
break;
case "CheckBox10":
sb.Append("This is checkbox 10.\r\n");
break;
}
txtBox.Text = sb.ToString();
}
else
{
switch (((CheckBox)sender).Name)
{
case "CheckBox1":
sb.Replace("This is checkbox 1.\r\n", "");
break;
case "CheckBox2":
sb.Replace("This is checkbox 2.\r\n", "");
break;
case "CheckBox3":
sb.Replace("This is checkbox 3.\r\n", "");
break;
case "CheckBox4":
sb.Replace("This is checkbox 4.\r\n", "");
break;
case "CheckBox5":
sb.Replace("This is checkbox 5.\r\n", "");
break;
case "CheckBox6":
sb.Replace("This is checkbox 6.\r\n", "");
break;
case "CheckBox7":
sb.Replace("This is checkbox 7.\r\n", "");
break;
case "CheckBox8":
sb.Replace("This is checkbox 8.\r\n", "");
break;
case "CheckBox9":
sb.Replace("This is checkbox 9.\r\n", "");
break;
case "CheckBox10":
sb.Replace("This is checkbox 10.\r\n", "");
break;
}
txtBox.Text = sb.ToString();
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.