2011-01-18 12 views
4

これはc#winformで可能かどうかを知りたい。コントロールを動的に作成する

ボタンを押したときにコントロールを作成し、所定の場所に配置します。

私はそれがこの

private TextBox txtBox = new TextBox(); 
private Button btnAdd = new Button(); 
private ListBox lstBox = new ListBox(); 
private CheckBox chkBox = new CheckBox(); 
private Label lblCount = new Label(); 

のようなことも可能だと思いますが、問題は、ボタンが押され、これまでと同じ名前のコントロールがその

は何ダ避けるためにcreated.Howあるときにある....... コントロールが既にbtnAddを含んでいるので、私はそれを期待していました。 それらにアクセスすることは問題になりますが、@drachensternメソッドで解決されますか?

private void button1_Click_1(object sender, EventArgs e) 
     { 
      Button btnAdd = new Button(); 

      btnAdd.BackColor = Color.Gray; 
      btnAdd.Text = "Add"; 
      btnAdd.Location = new System.Drawing.Point(90, 25+i); 
      btnAdd.Size = new System.Drawing.Size(50, 25); 
      this.Controls.Add(btnAdd); 
      i = i + 10; 
     } 

答えて

3

私はhereを投稿した解決策を試すことができます。コンストラクタに5つのボタンを動的に作成します。コードをボタンクリックイベントに移動するだけで、ボタンが動的に追加され、Clickイベントで登録する必要があります。

2

List<TextBox>のように聞こえます。

+0

これで、すべてのプロパティイベントなどのように、実際のテキストボックスのように扱うことができます。 –

+0

idk、彼は決して固有のものに '.Name'プロパティを設定しません。 – jcolebrand

+0

@Afnan:それは本当のテキストボックスです。 – SLaks

3
int currentNamingNumber = 0; 

txtBox.Name = "txtBox" + currentNamingNumber++; 

リンス、リピート。

各要素に固有の数値を与え、作成された要素の数を調べることができます(作成されたすべてのオブジェクトを追跡するために減少させたくないことに注意してください。 )。

あなたが望む名前を新しい関数に渡すことはできませんが、作成後はいつでも名前を設定できます。

関連する問題