2016-05-03 9 views
-1
TextBox txt1 = new TextBox(); 
TextBox txt2 = new TextBox(); 

if (Cat0.Text == "test") 
{ 
    txt1.Name = "testText"; 
    txt1.Width = 170; 
    txt1.Height = 21; 
    txt1.Location = new System.Drawing.Point(122, 145); 

    txt2.Name = "testText2"; 
    txt2.Width = 170; 
    txt2.Height = 21; 
    txt2.Location = new System.Drawing.Point(122, 171); 

    panel1.Controls.Add(txt1); 
    panel1.Controls.Add(txt2); 
} 
else 
{ 
    if (panel1.Controls.Contains(txt1)) // not working 
    { 
     panel1.Controls.Remove(txt1); 
    } 
} 

if elseステートメントが機能していません。だから私はこのブロックのフォームコントロールを削除することはできません。私は動作しない理由は、コードで作成されたtxt1コントロールのためだと思います。C#でフォームコントロールを削除するには?

+3

あなたは* *動作していないとはどういう意味ですか?表示されているコードからは、 'else'ではコントロールが' panel1'に追加されないので、 'if'を入力することはありません。 – Filburt

+0

テキストボックスのメンバーを作成してメンバーを確認するだけです。前に追加したテキストボックスとは異なるテキストボックスの完全な新しいインスタンスを作成します。 –

答えて

0

は、私がここでの問題は、新しいテキストボックスにあなたが方法を入力するたびに作成しているということだと思います。この

TextBox txt1 = new TextBox(); 
TextBox txt2 = new TextBox(); 
if (Cat0.Text == "test") 
{ 
    txt1.Name = "testText"; 
    txt1.Width = 170; 
    txt1.Height = 21; 
    txt1.Location = new System.Drawing.Point(122, 145); 
    txt2.Name = "testText2"; 
    txt2.Width = 170; 
    txt2.Height = 21; 
    txt2.Location = new System.Drawing.Point(122, 171); 
    panel1.Controls.Add(txt1); 
    panel1.Controls.Add(txt2); 
} 
else 
{ 
    foreach (Control item in panel1.Controls) 
    { 
     if (item.Name == "testText") 
     { 
       panel1.Controls.Remove(item); 
       break; 
     } 
    } 
} 
+0

しかし、名前は 'txt1.Name =" testText "; –

+0

yaaちょっと気付いてコードを編集しました –

+1

これは存在しない問題を解決します:' txt1'は 'panel1'に決して追加されないので削除するものはありません示されたプログラムフロー。 – Filburt

0

を試してみてください。方法の外側にTextBox txt1 = new TextBox();TextBox txt2 = new TextBox();を移動してください。うまくいくと思います。

0

ローカル変数に正しいインスタンスがないように、常に新しいインスタンスを作成します。ここで

が行う方法です:

TextBox txt1 = null; 

    //Lookup txt1 
    foreach (Control item in panel1.Controls) 
    { 
    if (item.Name == "testText") 
    { 
     txt1 = (TextBox)item; 
    } 
    }  

    TextBox txt2 = null; 
    //Lookup txt2 
    foreach (Control item in panel1.Controls) 
    { 
    if (item.Name == "testText2") 
    { 
     txt2 = (TextBox)item; 
    } 
    } 
    if (Cat0.Text == "test") 
    { 
    if (txt1 == null) 
    { 
     //only if txt1 not found add it 
     txt1 = new TextBox(); 
     txt1.Name = "testText"; 
     txt1.Width = 170; 
     txt1.Height = 21; 
     txt1.Location = new System.Drawing.Point(122, 145); 
     panel1.Controls.Add(txt1); 
    } 

    if (txt2 == null) 
    { 
     txt2 = new TextBox(); 
     txt2.Name = "testText2"; 
     txt2.Width = 170; 
     txt2.Height = 21; 
     txt2.Location = new System.Drawing.Point(122, 171); 
     panel1.Controls.Add(txt2); 
    } 
    } 
    else 
    { 
    if (panel1.Controls.Contains(txt1)) 
    { 
     panel1.Controls.Remove(txt1); 
    } 
    } 
} 
関連する問題