0

我有一个主表单,其中包含一个打开另一个表单的事件。

在第一个表单中,我这样定义事件:

private void softToolStripMenuItem_Click(object sender, EventArgs e)
    {
        _frmSetting = new frmSetting();
        _frmSetting.ShowDialog();
    }

该事件在对话框中打开一个窗体。一切都好。

在InitializeComponent()之前的 Form2 内部;,我想更改 Form 2 上 TextBox 的内容。

所以我这样做this.textBox1.Text = "New text";但它没有工作然后我输出到控制台:

this.textBox1.Text = "New text";
System.Console.WriteLine(this.textBox1.Text);

但这在 Form1 启动时立即生效..我可以看到控制台输出。通常,只有在我调用 Form2 时才应该查看控制台输出。

有人了解我的需求吗?

编辑

public form2()
        {
            InitializeComponent();
            try
            {
            this.txtServer = new TextBox();
            //this._parameter = new Parameter();

            //this._get_parameter = new Dictionary<string, string>();

            String _server_name;
            //this._parameter.get_db_connection_parameters().TryGetValue("server", out _server_name);
            this.txtServer.Text = _server_name.ToString();

            System.Console.WriteLine(txtServer.Text + "---");
        }
        catch (Exception er) { System.Console.WriteLine("An error occurs :" + er.Message + " - " + er.StackTrace); }
    }

请不要理会注释行,它可以工作 _server_name 变量正在从文本文件中获取其值,并且在此阶段可以工作。问题出在这条线上:

this.txtServer.Text = _server_name.ToString();
4

3 回答 3

3

你把这件事复杂化了。首先,正如其他人所说,您不能在调用InitializeComponent. 此外,您无需在调用InitializeComponent. 调用该方法后,txtServer文本框将已创建并正确初始化。然后,您需要做的就是设置其Text属性的值:

public form2()
{
    InitializeComponent();
    try
    {
        String _server_name;
        // set value of _server_name
        txtServer.Text = _server_name;
    }
    catch (Exception er) { System.Console.WriteLine("An error occurs :" + er.Message + " - " + er.StackTrace); }
}
于 2012-12-31T12:14:02.387 回答
0

之前不能为文本框设置任何值initializeComponent();。如果您查看 initializeComponent 函数,您会看到,它确实初始化了设计器中添加的所有控件以及您的文本框。

不能在初始化之前设置 TextBox.Text 属性,它会失败,就是这样。

于 2012-12-31T11:57:35.353 回答
0

非常感谢所有人,现在一切正常。事实上,我在 Form1() 构造函数中初始化 Form2 并且得到这个错误对象引用到非对象初始化(类似的东西)。我把它移到这里:

private void softToolStripMenuItem_Click(object sender, EventArgs e)
{
    _frmSetting = new frmSetting();
    _frmSetting.ShowDialog();
}

现在在initializeComponent() 我这样做之后的 Form2() 里面

this.txtServer = _server_name;

它有效

于 2012-12-31T12:33:04.707 回答