0

別のフォームを開くイベントを含むメイン フォームがあります。

最初のフォーム内で、次のようにイベントを定義します。

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();
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 を初期化していて、このエラー Object reference to non object initializing (そのようなもの) を取得していました。ここに移動します:

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 に答える