回答
看看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