我目前正在处理将文本附加到文本框。在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(" ");
}
}
答案 0 :(得分:2)
要仅删除您添加的文字,您可以使用String.Replace
:
textBox1.Text = textBox1.Text.Replace(" Example1 ", "");
请注意,如果用户更改了该值,则此文本可能会或可能不会出现在TextBox
中。我假设你知道这一点,或者这只是一个练习。
答案 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 ", "");
}
}