2013-07-01 51 views
2

裏面Form1我有一個組合框cmbDataList。在用戶選擇我想使用該選擇與選擇的文本傳遞給表單,所以我用下面的代碼:將簡單的字符串從一種形式傳遞到另一種形式

Form1.cs的

private void cmbDataList_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    selectedOption = (ICustomData)cmbDataList.SelectedItem;    
    Form2 frm2 = new Form2() { SelectedData = selectedOption.ToString() }; 
} 

裏面Form2我有應該接收SelectedData屬性通過選擇文本從Form1

Form2.cs

public string SelectedData { get; set; } 

private void Form2_Load(object sender, EventArgs e) 
{  
    txtSelectedData.Text = SelectedData ;      
} 

On loading txtSelectedData.Text爲空,它沒有填充字符串值。

我在做什麼錯在這裏?

+1

窗體的Show()的代碼在哪裏? – V4Vendetta

+0

顯示()?請添加更多詳細信息 – panjo

+0

您是否驗證過'selectedOption.ToString()'實際返回任何內容? – Andre

回答

4

值只要改變從SelectedData屬性定義自動生成一個其中設置並返回文本txtSelectedData文本框:

public string SelectedData 
{ 
    get { return txtSelectedData.Text; } 
    set { txtSelectedData.Text = value; } 
} 

UPDATE當前的代碼應該工作,如果你只是創建後顯示形式:

Form2 frm2 = new Form2() { SelectedData = selectedOption.ToString() }; 
frm2.Show(); // here 
+1

很好的答案,thx – panjo

+0

不確定但不會在顯示窗體時觸發加載事件,所以它應該設置值?這個任務不是構造函數的一部分 – V4Vendetta

+0

@ V4Vendetta啊,謝謝。不明原因,我認爲這是構造函數。實際上'Load'在表單第一次顯示之前被觸發。我會更新答案 –

3

您需要將選定的數據傳遞給form2構造函數。

所以修改形式2 constructoo這樣

public form2(String SelectedData){ 
txtSelectedData.Text = SelectedData ; 
} 

和創建窗口2的實例時,通過像這樣

Form2 frm2 = new Form2(selectedOption.ToString()); 
0

這將覆蓋文本對象初始化調用之前。

public string SelectedData { get; set; } 

private void Form2_Load(object sender, EventArgs e) 
{  
    txtSelectedData.Text = SelectedData ;      
} 

您可以使用Form.Shown事件或使用此處提及的其他方法。

相關問題