1

我有一个带有选项卡控件的表单,在其中一个选项卡上,我有一个ComboBox. 根据用户在 this 中选择的值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

我想您在InitializeComponents()(表单设计器内容)中正确初始化了 filePathBox,所以... 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 回答