下午的人,
我的问题涉及复选框和文本框。
为了给它上下文我正在制作一个时间表系统,允许用户将时间表事件添加到他们自己的时间表中,并且为了选择他们的事件发生的时间,我有一系列复选框。
我总共有25个复选框,我想知道我是否可以让文本框(或标签)显示选中的复选框的名称?
例如,用户在星期一9:15和星期五2:15检查,我的文本框将显示在星期一9:15和星期五2:15。
由于
答案 0 :(得分:3)
在checkBox1_CheckedChanged
事件
private void checkBox1_CheckedChanged(object sender, EventArgs e)
{
if(checkBox1.Checked)
textBox1.Text = checkBox1.Text;
}
答案 1 :(得分:1)
我会做这样的事情:
private void checkBox1_CheckedChanged(object sender, EventArgs e)
{
if(checkBox1.Checked)
listbox1.items.add(checkBox1.Text);
}
通过这种方式,日期和时间将添加到列表中。 Personaly我认为这种方式有效,因为你可以看到你列出的所有日期。
答案 2 :(得分:0)
对不起因为我无法评论你的帖子@Rouge。我想补充一下
if(checkBox1.Checked) { // your statement }
因为在你的情况下我认为textBox会改变它的文本,即使它的状态从checked更改为unchecked。
答案 3 :(得分:0)
您可以使用事件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