c# - 如何使用事件更新类中的 TextBox?

标签 c# winforms events

我想用正在从类文件处理的数据更新 winforms 中表单的 textbox

示例:

Class.RunProcess();

在 RunProcess 内部,我想触发一个事件,该事件将使用我在获胜表单中传递的文本更新文本框。

我知道您可以使用事件来做到这一点,所以我不必将 textbox 公开或将其传递到我拥有的许多方法中,我只是不太确定如何开始。

编辑: 也许我只是不清楚。

我有一个带有文本框的窗口。

我有一个运行进程的按钮。

该过程在表单类之外的类文件中。

在这个过程方法中,我希望能够更新主窗体上的文本框,而不必将 TextBox 作为参数传递给我将拥有的所有方法(我目前有 6 个,而且会更多)。

我想我可以订阅一个事件,允许我在我的类中运行过程时在文本框中显示一条消息。

最佳答案

可能是时候考虑了:

  1. 将你的文本框数据绑定(bind)到你的类
  2. 模型/ 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/

相关文章:

JavaScript AddToStage 等效项

python - 将组分配给 Pandas 列中的连续 1

c# - 将(一些)Unicode 非间距标记与相关字母组合以进行统一处理

c# - 如何使用控件(例如按钮)从表单调用事件?

winforms - 如何在 MVC/MVVM Windows 窗体应用程序中进行错误处理

c# - Visual Studio 2010 突然看不到命名空间?

c# - 如何在运行时检索事件的订阅者列表?

c# - 如何将数组转换或复制到链表?

C# - 将十进制转换为 int32

c# - 如何在 Open XML SDK 中有效地缓冲和刷新流