0

我目前正在将文本附加到文本框。在 winform 中,我有两个复选框和一个文本框。每次选中复选框时,文本框内都会出现一个文本。但是当复选框未选中时,我很难取出文本。选中复选框时如何附加文本并在未选中时取出文本?

 private void checkBox1_CheckedChanged(object sender, EventArgs e)
 {
     ck = sender as CheckBox;
     if (ck != null && ck.Checked)
     {
         textBox1.AppendText(" Example1 ");
     }
     else
     {
         textBox1.AppendText("  ");
     }
 }

 private void checkBox2_CheckedChanged(object sender, EventArgs e)
 {
     ck = sender as CheckBox;
     if (ck != null && ck.Checked)
     {
         textBox1.AppendText(" Example2 ");
     }
     else
     {
         textBox1.AppendText("  ");
     }
 }
4

5 回答 5

2

要仅取出您添加的文本,您可以使用String.Replace

textBox1.Text = textBox1.Text.Replace(" Example1 ", "");

请注意,如果用户更改了该值,则此文本可能仍会或可能不会位于TextBox. 我假设您已经意识到这一点,或者这只是一个练习。

于 2013-02-21T06:39:42.920 回答
2

假设您要显示:

  • 示例 1 选中第一个复选框时
  • 示例 2 选中第二个时
  • 示例 1 和示例 2 如果两者都被选中
  • 如果两者都未选中,则为空

最好的办法是将 UI 逻辑集中在一个反映您的规则的方法中:

该方法与删除我不需要的文本不同。我从一个空列表开始,然后填写是否选中复选框。然后我显示它。通过这种方式,我不必处理尾随分隔符。

private void checkBox1_CheckedChanged(object sender, EventArgs e)
{
    UpdateTextBox();
}

private void checkBox2_CheckedChanged(object sender, EventArgs e)
{
    UpdateTextBox();
}

void UpdateTextBox()
{
    var words = new List<string>();

    if (checkbox1.Checked)
        words.Add("Example 1");

    if (checkbox2.Checked)
        words.Add("Example 2");

    textBox1.Text = string.Join(" ", words);
}
于 2013-02-21T06:40:44.653 回答
1
if (ck != null && ck.Checked)
   textBox1.Text = "Example";
else
   textBox1.Text = "";
于 2013-02-21T06:39:18.207 回答
1

你的意思是

textBox1.Text = string.Empty

还是我错过了什么?

于 2013-02-21T06:39:35.937 回答
0

试试这个

 private void checkBox1_CheckedChanged(object sender, EventArgs e)
  {
        ck = sender as CheckBox;

        if (ck != null && ck.Checked)
        {
            textBox1.AppendText(" Example1 ");
        }
        else
        {
            textBox1.Text = textBox1.Text.Replace(" Example1 ", "");
        }
    }

    private void checkBox2_CheckedChanged(object sender, EventArgs e)
    {

        ck = sender as CheckBox;

        if (ck != null && ck.Checked)
        {
            textBox1.AppendText(" Example2 ");
        }
        else
        {
            textBox1.Text = textBox1.Text.Replace(" Example2 ", "");
        }
}
于 2013-02-21T06:43:25.683 回答