1

タブ コントロールを含むフォームがあり、これらのタブの 1 つにComboBox. ユーザーがこの で選択した値に応じてComboBox、さまざまなコントロールに入力する必要があります。TextBoxこれは正常に機能していますが、ユーザーが入力したコントロールに入力したテキストを取得しようとすると、TextBox.Text何も返されません。 TextBox.Text同じフォームにa を追加すると正常に動作しますTextBoxが、フォームの初期化に含めます (後で以下の方法でフォームに入力するのではなく)。これにより、コントロールにプロパティがないと思われます。

  • コントロールにテキストを入力したくありません。ユーザーが実行時に入力する文字列が必要ですTextBox.Text。コントロールに既にある文字列の値ではなく、その値を取得するために使用したいのです。

TextBoxおよびその他のコントロールをタブ コントロールに設定するために使用しているメソッドのスニペット:

private System.Windows.Forms.TextBox filePathBox;

private void populateControls(string someText)
    {
        if (someText == "Something")
        {
            // 
            // TextBox
            //
            this.filePathBox.Location = new System.Drawing.Point(6, 61);
            this.filePathBox.Name = "filePathBox";
            this.filePathBox.Size = new System.Drawing.Size(220, 20);

            this.tabPage1.Controls.Add(this.filePathBox);
            this.filePathBox.Show();
        }
        else if (someText == "SomethingElse")
        {
            //populate other controls.
        }
    }

そして、テストするために、MessageBoxにある文字列のを単に表示するボタンがありますがTextBox、結果は何もありません。

private void button2_Click(object sender, EventArgs e)
    {
        MessageBox.Show(filePathBox.Text);
    }

繰り返しますが、 からいくつかのプロパティが欠落していると思いますがTextBox、この時点で何でも感謝します。

4

3 に答える 3

1

あなたの変更:

this.filePathBox = new TextBox();

に:

if(this.filePathBox==null)
{
    this.filePathBox = new TextBox();  
}
于 2013-01-16T16:36:07.147 に答える
0

(フォームデザイナコンテンツ)でfilePathBoxを正しく初期化したと思いますInitializeComponents()ので、filePathBox.Textは最初は空になります。何かが表示される前に、コンテンツを入力する必要があります...次のようになります。

filePathBox.Text = "something";
MessageBox.Show(filePathBox.Text);
于 2013-01-16T15:20:33.193 に答える
0

簡単なサンプルを作成しましたが、問題はありませんでした。コンストラクターが InitializeComponents を呼び出していることを確認してください。

 private System.Windows.Forms.TextBox filePathBox = new TextBox();

    public Form1()
    {
        InitializeComponent();
        PopulateControls("Something");
    }

    public void PopulateControls(string someText)
    {
        if (someText == "Something")
        {

            this.filePathBox.Location = new System.Drawing.Point(6, 61);
            this.filePathBox.Name = "filePathBox";
            this.filePathBox.Size = new System.Drawing.Size(220, 20);

            this.tabPage1.Controls.Add(this.filePathBox);
            this.filePathBox.Show();
        }

    }

    private void button1_Click(object sender, EventArgs e)
    {
        if (filePathBox != null)
        {
            MessageBox.Show(filePathBox.Text);
        }
    }
于 2013-01-16T16:41:28.193 に答える