我想用正在从类文件处理的数据更新 winforms 中表单的 textbox
。
示例:
Class.RunProcess();
在 RunProcess 内部,我想触发一个事件,该事件将使用我在获胜表单中传递的文本更新文本框。
我知道您可以使用事件来做到这一点,所以我不必将 textbox
公开或将其传递到我拥有的许多方法中,我只是不太确定如何开始。
编辑: 也许我只是不清楚。
我有一个带有文本框的窗口。
我有一个运行进程的按钮。
该过程在表单类之外的类文件中。
在这个过程方法中,我希望能够更新主窗体上的文本框,而不必将 TextBox 作为参数传递给我将拥有的所有方法(我目前有 6 个,而且会更多)。
我想我可以订阅一个事件,允许我在我的类中运行过程时在文本框中显示一条消息。
最佳答案
可能是时候考虑了:
- 将你的文本框数据绑定(bind)到你的类
- 模型/ View /演示者 (MVP)
对于 #1(数据绑定(bind)),您可以在您的类上使用 INotifyPropertyChanged 接口(interface)并引发已更改属性的事件。
public class BusinessModel : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
private int _quantity;
public int Quantity
{
get { return _quantity; }
set
{
_quantity = value;
this.OnPropertyChanged("Quantity");
}
}
void OnPropertyChanged(string PropertyName)
{
if (this.PropertyChanged != null)
{
this.PropertyChanged(this, new PropertyChangedEventArgs(PropertyName));
}
}
}
在您的表单中,您可以通过多种方式将文本框的 .Text 属性绑定(bind)到对象。通过 UI 或代码。
链接:
现在,如果您需要添加到已经存在的文本(例如在您的示例中),您可以跟踪类中的完整文本或从类中引发事件并在表单代码中响应。在类里面跟踪它会更好——您真的根本不需要表单中的任何逻辑,这让我们回到绑定(bind)和/或某种形式的 MVP/MVC。
关于c# - 如何使用事件更新类中的 TextBox?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/988693/