2012-12-31 25 views
0

我有一個主要的窗體與事件打開另一個窗體。2C#加載表格

第一表單中,我定義的事件是這樣的:

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

該事件在對話框中打開一個表格。一切都好。

在Form2之前的InitializeComponent();,我想改變表2.

所以我這樣做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(); 
+0

你會澄清的問題: 我搬到這裏來呢?你是否想用特定的文本初始化表單2中的文本框,以便當form2顯示文本框中有「新文本」文本? –

+4

你必須在* InitializeComponent()之後設置任何值*。 –

+0

您需要顯示設置文本框的值。你在調用ShowDialog之前還是之後執行它? –

回答

0

非常感謝大家, 現在一切工作正常。事實上,我在Form1()構造函數中初始化Form2,並且得到了這個錯誤的對象引用非對象初始化(類似的東西)。後initializeComponent()

private void softToolStripMenuItem_Click(object sender, EventArgs e) 
{ 
    _frmSetting = new frmSetting(); 
    _frmSetting.ShowDialog(); 
} 
的窗體2()內

,現在我只是這樣做

this.txtServer = _server_name; 

和它的作品

0

initializeComponent();之前,您不能設置任何值文本框。如果你看看initializeComponent函數,你會發現,它確實初始化了在設計器和文本框中添加的所有控件。

不能在初始化之前設置TextBox.Text屬性,它會失敗,就是這樣。

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

upvoted for beating me to它並使用「過度複雜」一詞! –