回答
看看MVP模式 - 你可以讓你的表單實現一個IView接口。你的另一個對象是當演示文稿發生變化時(或讓你的視圖訂閱演示者事件 - 我更喜歡使用方法的方法)時,演示者會調用例如IView.UpdateText()。
這可以分離您的疑慮並使您的解決方案更具可測性,因爲您可以模擬IView,IPresenter和IModel的實施。
表單應檢查this.InvokeRequired == true
以確定傳入請求是否在UI線程上。如果不是,則需要使用委託。
public delegate void UpdateTextDelegate(string text);
public void UpdateText(string text)
{
// Check we are on the right thread.
if (!this.InvokeRequired)
{
// Update textbox here
}
else
{
UpdateTextDelegate updateText = new UpdateTextDelegate(this.UpdateText);
// Executes a delegate on the thread that owns the control's underlying window handle.
this.Invoke(updateText, new object[] { text });
}
}
我不會將文本傳遞給對象。如果你只需要它作爲初始化值,將文本傳遞給表單的構造函數就沒問題。但不是其他方式。
非常簡單的解決方案: 給你的表單一個公共SetTextValue(字符串文本)方法,它設置文本。
事件也會起作用,但對於這樣一個簡單的問題似乎有點過分。
有很多方法來完成這取決於你正在工作的細節。
更新窗體內的文本字段?
txtField.Text = someObject.SomeProperty;
在表單的構造函數中設置值?
SomeFormClass form1 = new SomeFormClass(aString);
form1.Show();
從外部對象調用表單上的方法?
public void SetText(string text) { txtField.Text = text; }
form1.SetText(aString);
使用數據綁定?
txtField.DataBindings.Add(new Binding("Text", someObject, "SomeProperty");
如果不知道更多細節,很難回答。
感謝您的回覆,實際上DataBindigs方法就是我所需要的。它不工作,綁定應該在哪裏?我試圖把它放在Form的構造器和_Load方法中,但沒有運氣。 – xain 2010-05-12 16:11:39
如果你想使用數據綁定,我會從這裏開始閱讀:http://msdn.microsoft.com/en-us/library/c8aebh9k.aspx 對於數據綁定控件更新時,它綁定的對象更改該對象將需要實現INotifyPropertyChanged。 – 2010-05-12 16:33:18
- 1. 形式的文本輸入錯位
- 2. Python - 機械化輸入文本形式
- 3. 更改形式輸入
- 4. jquery多文本字段更新形式
- 5. JS - 模擬形式 「的形式屬性」 文本輸入
- 6. 輸入後更新文本字段
- 7. 用文本輸入值更新父項
- 8. 如何從JavaScript更新輸入文本?
- 9. Java文本形式到新形式
- 10. JSF不能在UI更新單一的形式:從外部
- 11. 輸入類型文本值形式(ENCTYPE =「多部分/格式數據」)返回null
- 12. Django的形式部件號輸入
- 13. 閃亮 - 爲選擇輸入更新輸入文本
- 14. 更新自舉外部輸入與jQuery沒有顯示
- 15. 把價值直接放入輸入文本框的形式?
- 16. PHP - 以格式輸入文本輸入
- 17. 格式化和操作文本輸入形式用PHP
- 18. 傳遞形式輸入到JavaScript,然後更新帆布
- 19. 浮點數的基本輸入形式?
- 20. 如何更新Subversion外部版本
- 21. 創建與外部形式
- 22. 簡單形式的文本輸入字段作爲數組的一部分
- 23. flash加載外部swf並更改子輸入文本字段值
- 24. 如何使用Perl將輸出寫入新的外部文件?
- 25. 樣式輸入文本CSS
- 26. 輸入格式文本
- 27. 以一種形式插入和更新
- 28. simpleModal更新形式
- 29. PrimeNG數據表按列過濾 - 外部文本框輸入
- 30. 更新外部json文件的值
感謝您的回覆...和我怎麼從外部對象到「Form1的」對象的引用? – xain 2010-05-12 16:03:17
您可以創建演示者(MVP)來更新表單。演示者在構造函數中獲取表單的實例和「外部對象」(模型)。演示者訂閱模型上的某些事件。當適當的事件被觸發時,演示者可以更新表單。 – 2010-05-12 16:11:00