我有一个带有标签控件的表单,在其中一个标签上,我有一个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.
}
}
而且,为了进行测试,我有一个按钮,只显示MessageBox
中TextBox
的字符串private void button2_Click(object sender, EventArgs e)
{
MessageBox.Show(filePathBox.Text);
}
,但不会产生任何结果。
TextBox
同样,它让我觉得我错过了{{1}}的一些属性,但此时任何事情都会受到赞赏。
答案 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);
}
}