附加&从TextBox中删除文本

时间:2013-02-21 06:35:07

标签: c# winforms

我目前正在处理将文本附加到文本框。在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("  ");
     }
 }

5 个答案:

答案 0 :(得分:2)

要仅删除您添加的文字,您可以使用String.Replace

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

请注意,如果用户更改了该值,则此文本可能会或可能不会出现在TextBox中。我假设你知道这一点,或者这只是一个练习。

答案 1 :(得分: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);
}

答案 2 :(得分:1)

if (ck != null && ck.Checked)
   textBox1.Text = "Example";
else
   textBox1.Text = "";

答案 3 :(得分:0)

你的意思是

textBox1.Text = string.Empty

或者我错过了什么?

答案 4 :(得分: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 ", "");
        }
}