2013-02-21 83 views
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(" "); 
    } 
} 
+1

如果宇想清楚了'textBox1',只要使用'textBox1.Text = string.Empty' – 2013-02-21 06:38:34

回答

2

要拿出你剛纔添加的文本,你可以使用String.Replace

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

需要注意的是,如果用戶更改的價值,這個文本可能會或可能不會仍然處於TextBox。我假設你意識到這一點,或者這只是一個練習。

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

你的意思

textBox1.Text = string.Empty 

還是我失去了一些東西?

2

假設要顯示:

  • 實施例1,當第一複選框被選中
  • 實施例2當第二被檢查
  • 實施例1和實施例2,如果兩者都檢查
  • 空如果兩者都未被檢查

最好的是集中UI邏輯在一個反映您的規則的方法s:

該方法不同於刪除我不需要的文本。我從一個空白列表開始,並填寫它是關於複選框是否被選中。然後我顯示它。通過這種方式,我不必應付尾隨分隔符。

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); 
} 
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 ", ""); 
     } 
}