c#使文本框显示已选中的复选框

本文关键字:复选框 显示 文本 | 更新日期: 2023-09-27 17:51:09

下午好,

我的问题是关于复选框和文本框的。

为了给出上下文,我正在制作一个时间表系统,允许用户将时间表事件添加到他们自己的时间表中,为了选择事件发生的时间,我有一系列的复选框。

我有25个复选框在所有,我想知道我是否可以使一个文本框(或标签)显示复选框的名称被选中?

例如,用户检查星期一是9:15,星期五是2:15,我的文本框将显示星期一9:15,星期五2:15。

谢谢

c#使文本框显示已选中的复选框

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会改变它的文本,即使它将其状态从选中更改为未选中