1

C#のテキストボックスについて質問があります。クリックするとテキストボックスを作成するボタンを作成しました。

    private void helloButton_Click(object sender, EventArgs e)
    {
        TextBox txtRun = new TextBox();
        TextBox txtRun2 = new TextBox();
        txtRun2.Name = "txtDynamic2" + c++;
        txtRun.Name = "txtDynamic" + c++;
        txtRun.Location = new System.Drawing.Point(40, 50 + (20 * c));
        txtRun2.Location = new System.Drawing.Point(250, 50 + (20 * c));
        txtRun2.ReadOnly = true;

        txtRun.Size = new System.Drawing.Size(200, 25);
        txtRun2.Size = new System.Drawing.Size(200, 25);
        this.Controls.Add(txtRun);
        this.Controls.Add(txtRun2);
    }

ユーザーが入力したテキストをこれらの新しく生成されたテキストボックスにプルして、別の関数(別のボタンで呼び出される)の引数として使用するにはどうすればよいですか?私はこれにまったく慣れていないので、ヘルプを使用できます。

前もって感謝します。

4

4 に答える 4

1
var text = (TextBox)this.Controls.Find("txtDynamic2", true)[0];
于 2013-02-09T10:56:38.607 に答える
1
var matches = this.Controls.Find("txtDynamic2", true);
TextBox tx2 = matches[0] as TextBox;            
string yourtext = tx2.Text;

これにより、txtDynamic2 という名前のコントロールの配列が返されます。この場合、同じ名前のコントロールをさらに作成しない限り、最初のコントロールが探しているコントロールになります。これにより、テキストボックスが見つかった場合に完全にアクセスできるようになります。

于 2013-02-09T10:25:24.817 に答える
0

インスタンス化されたテキストボックスを他のメソッドで使用したい場合は、それらをメソッドに渡すか、クラスのメンバーとして保存することで実現できます。

以下のクラスにそれらを格納する例。

public class YourForm
{
    private TextBox txtRun;
    private TextBox txtRun2;

    private void helloButton_Click(object sender, EventArgs e)
    {
        txtRun = new TextBox();
        txtRun2 = new TextBox();

        // removed less interesting initialization for readability

        this.Controls.Add(txtRun);
        this.Controls.Add(txtRun2);
    }

    public void DoStuffWithTextBoxes()
    {
        if (txtRun != null && txtRun2 != null)
        {
            // Retrieve text value and pass the values to another method
            SomeOtherMagicMethod(txtRun.Text, txtRun2.Text);
        }
    }

    private void SomeOtherMagicMethod(string txtRunText, string txtRun2Text)
    {
        // Do more magic
    }
}
于 2013-02-09T10:14:56.843 に答える
0

あなたはそれを非常に簡単に行うことができます:

//get the text from a control named "txtDynamic"
string text = this.Controls["txtDynamic"].Text;

コントロールに一意の プロパティがあることを忘れないでくださいName。そうでない場合は、指定された名前で最初に見つかったコントロールからテキストを取得します。

于 2013-02-09T10:38:15.317 に答える