0

現在、テキストボックスにテキストを追加する作業を行っています。winform には、2 つのチェックボックスと 1 つのテキストボックスがあります。チェックボックスがチェックされるたびに、テキストボックス内にテキストが表示されます。しかし、チェックボックスがオフになっていると、テキストを取り出すのに苦労しています。チェックボックスがチェックされているときにテキストを追加し、チェックされていないときにテキストを取り出すにはどうすればよいですか?

 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

表示したい場合:

  • 最初のチェックボックスがチェックされている場合の例 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 に答える
2

追加したテキストだけを取り出すには、次を使用できますString.Replace

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

ユーザーが値を変更した場合、このテキストが にある場合とない場合があることに注意してくださいTextBox。私はあなたがこれを認識しているか、これは単なる演習であると仮定します.

于 2013-02-21T06:39:42.920 に答える
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 に答える