c#使文本框显示已选中的复选框
本文关键字:复选框 显示 文本 | 更新日期: 2023-09-27 17:51:09
下午好,
我的问题是关于复选框和文本框的。
为了给出上下文,我正在制作一个时间表系统,允许用户将时间表事件添加到他们自己的时间表中,为了选择事件发生的时间,我有一系列的复选框。
我有25个复选框在所有,我想知道我是否可以使一个文本框(或标签)显示复选框的名称被选中?
例如,用户检查星期一是9:15,星期五是2:15,我的文本框将显示星期一9:15,星期五2:15。
谢谢
在checkBox1_CheckedChanged
事件
private void checkBox1_CheckedChanged(object sender, EventArgs e)
{
if(checkBox1.Checked)
textBox1.Text = checkBox1.Text;
}
我会这样做:
private void checkBox1_CheckedChanged(object sender, EventArgs e)
{
if(checkBox1.Checked)
listbox1.items.add(checkBox1.Text);
}
这样,日期和时间将被添加到列表中。我个人认为这种方式效果更好,因为你可以看到你列出的所有日期。
您可以使用CheckedChanged事件。当您使用许多复选框时,您可以只编写一个方法并将其用于所有复选框。
我建议您使用一个值列表来存储您想要在文本框中显示的内容,然后对其进行处理(在我的示例中,我对数据进行排序并将它们连接起来)。
public partial class Form1 : Form
{
private List<String> listData;
public Form1()
{
this.listData = new List<String>();
InitializeComponent();
}
private void checkBoxs_CheckedChanged(object sender, EventArgs e)
{
CheckBox theCheckBoxChanged = sender as CheckBox;
// verify the event is from a checkbox
if (theCheckBoxChanged != null)
{
if (theCheckBoxChanged.Checked)
{
// add data
this.listData.Add(theCheckBoxChanged.Text);
}
else
{
// remove data
this.listData.Remove(theCheckBoxChanged.Text);
}
this.UpdateTextBox();
}
}
private void UpdateTextBox()
{
// be carefull, you can't concatenate if there is no data.
if (this.listData.Count > 0)
{
// sort and concatenate
this.textBox1.Text = this.listData
.OrderBy(s => s)
.Aggregate((s1, s2) => s1 + " and " + s2);
}
else
{
this.textBox1.Text = String.Empty;
}
}
}
不要忘记将所有复选框的事件CheckedChanged
分配给checkBoxs_CheckedChanged
对不起,我不能评论你的帖子,@Rouge。我想添加
if(checkBox1.Checked) { // your statement }
因为在你的例子中,我认为textBox会改变它的文本,即使它将其状态从选中更改为未选中