2C#加载表格

时间:2012-12-31 11:33:41

标签: c# winforms

我有一个主要表格,其中有一个事件可以打开另一个表格。

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

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

该事件在对话框中打开一个表单。一切都很好。

InitializeComponent(); 之前的Form2内部,我想更改表单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();

3 个答案:

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

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

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

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

现在位于initializeComponent()之后的Form2()内部 我只是这样做

this.txtServer = _server_name;

并且有效