2013-04-09 126 views
0

即時嘗試做一個簡單的變量綁定到控件文本框,但我不能爲我的生活得到這個工作。這裏是兩種形式1與數據網格和另一種與兩個文本框。當我點擊數據網格時,我想將這些變量傳遞給FORM1中的文本框。這是我嘗試過沒有結果。 在我的Form1中將變量綁定到.net textbox.text屬性

public string myText 
    { 
     get { return tuidInput.Text; } 
     set { tuidInput.Text = value; } 
    } 

然後我就形成了兩個當我嘗試設置我試試這個值。

private void selectUser(object sender, DataGridViewCellEventArgs e) 
    { 
     userPicked.tuid = dataGridView1.Rows[dataGridView1.CurrentCell.RowIndex].Cells["spriden_id"].Value.ToString(); 
     userPicked.Name = dataGridView1.Rows[dataGridView1.CurrentCell.RowIndex].Cells["spriden_last_name"].Value.ToString(); 

     Form1 form1 = new Form1(); 

     form1.myText = userPicked.tuid 
    } 

我接到這裏http://social.msdn.microsoft.com/forums/en-US/csharpgeneral/thread/7308639f-640b-48bf-8293-abcbfd2292d8/

這個例子但是它不會更新文本框?我應該做什麼不同?

我做錯了什麼?我如何正確地做到這一點,我已經看過這裏的幾篇文章,但沒有在任何一個成功。 任何幫助將不勝感激。

+0

獲取並設置不應引用UI元素。 UI元素應該綁定到屬性。 – Paparazzi 2013-04-09 01:11:03

+0

你能解釋一下嗎,我只是不跟隨? – Miguel 2013-04-09 01:15:26

+1

我認爲問題在於你正在創建一個'新的Form1()',也就是說你沒有在屏幕上設置當前'Form1'的值,但是它的一些新實例......你的Form2需要對Form1當前打開的實例的引用 - 您是否有打開表單的示例(例如,從Form1打開Form2的代碼或反之亦然) – nkvu 2013-04-09 01:58:45

回答

1

我不知道,如果是這樣的話,但在:
form1.myText = userPicked.tuid
你指的一個新創建的Form1的對象,初始化以上只是1行。如果您將檢查form1.myText屬性,您可能會注意到它已分配其值,但它不是您想要實際引用的表單對象。 如果您的文本框在Form2中,則在Form1中創建一個Form2引用。 private Form2 form2 = null;
並創建一個屬性

public Form2 SecondForm { set { this.form2 = value; } } 正確地分配它,然後在Form1中使用form2.tuidInput.Text正常。

+0

我有兩個窗體打開,並在同一時間我想更新form2中的窗體1中的文本框。我不確定我是否遵循你所說的話 – Miguel 2013-04-09 13:16:34

+0

我的意思是說,你並沒有改變已經打開的Form1對象中的文本框,而是在你創建的新文本框中創建了Form1 form1 = new Form1(); 您已經創建了2個不同類型的Form1對象。 – Tarec 2013-04-09 18:45:40

+0

哦,我明白了,所以我如何設置已打開窗體的文本框。使用你的方法? – Miguel 2013-04-09 20:07:04

0

你試過:

Form1 form1 = new Form1(); 
form1.myText.Text = userPicked.tuid; 
form1.myText.Refresh(); 
form1.Show(); 

您可能必須重新加載之後重新繪製文本框。

另外,你說你想正確地做到這一點。要做到「正確」(我說它鬆散,因爲「正確」可以在很多方面被許多不同的人解讀!) - 我想建議使用MVP,MVVM或MVC模式來處理這個,而不是這樣做GUI中的業務邏輯。

對於MVP例如: http://haacked.com/archive/2006/08/09/ASP.NETSupervisingControllerModelViewPresenterFromSchematicToUnitTestsToCode.aspx

+0

我有兩個窗體打開,並在同一時間我想更新form2中的窗體1中的文本框。當我這樣做的時候,我最終會得到一個額外的形式,開放結束?有沒有辦法從另一個打開的表單打開打開的表單? – Miguel 2013-04-09 13:17:37