TextBox.Text什么都不返回

时间:2013-01-16 15:14:48

标签: c# winforms

我有一个带有标签控件的表单,在其中一个标签上,我有一个ComboBox。根据用户在此ComboBox中选择的值,需要填充不同的控件。这工作正常,但是,当我尝试检索用户已放入TextBox控件的文本时,TextBox.Text向我返回任何内容。 TextBox.Text在我向同一表单添加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.
        }
    }

而且,为了进行测试,我有一个按钮,只显示MessageBoxTextBox的字符串private void button2_Click(object sender, EventArgs e) { MessageBox.Show(filePathBox.Text); } ,但不会产生任何结果。

TextBox

同样,它让我觉得我错过了{{1}}的一些属性,但此时任何事情都会受到赞赏。

3 个答案:

答案 0 :(得分:1)

改变你的:

this.filePathBox = new TextBox();

为:

if(this.filePathBox==null)
{
    this.filePathBox = new TextBox();  
}

答案 1 :(得分:0)

我认为您在InitializeComponents()(表单设计器内容)中正确初始化了filePathBox,因此... filePathBox.Text最初将为空。在显示内容之前,你必须用内容填充它......就像这样:

filePathBox.Text = "something";
MessageBox.Show(filePathBox.Text);

答案 2 :(得分: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);
        }
    }