C# 如何从控制器访问视图事件

C# 如何从控制器访问视图事件,c#,.net,winforms,model-view-controller,C#,.net,Winforms,Model View Controller,我的问题是关于在winforms中实现MVC模式 我了解到控制器对象负责处理视图中引发的事件。有人能告诉我控制器如何对视图中的文本输入或按钮按下事件作出反应吗?我的意思是,由于这些控件(文本框、按钮)是视图的私有控件,控制器如何知道某些事件发生而不在视图中进行处理。其思想是视图捕获事件,然后调用控制器中的适当函数。在Windows窗体中,这意味着您将附加一个事件处理程序,例如“button\u click”,然后调用controller.doFoo() 你可能会在Martin FoelsStan

我的问题是关于在winforms中实现MVC模式


我了解到控制器对象负责处理视图中引发的事件。有人能告诉我控制器如何对视图中的文本输入或按钮按下事件作出反应吗?我的意思是,由于这些控件(文本框、按钮)是视图的私有控件,控制器如何知道某些事件发生而不在视图中进行处理。

其思想是视图捕获事件,然后调用控制器中的适当函数。在Windows窗体中,这意味着您将附加一个事件处理程序,例如“button\u click”,然后调用controller.doFoo()


你可能会在Martin FoelsStand中阅读。

在WiFrm的情况下,我认为你应该考虑使用MVP模式。

你能展示你的WrFrm是如何设置的吗?我很着迷(阅读文章之后)考虑到视图装聋作哑,智能控制器将捕获的视图事件信息传递给视图,我想如果我在视图代码后面添加按钮点击事件处理程序,MVC纯粹主义者会向我扔石头。
 public partial class Form1 : Form
    {
        private Controller controller;
        public Form1()
        {
            InitializeComponent();
        }
        //Dependency Injection
        public Form1(Controller controller):this()
        {
            //add more defensive logic to check whether you have valid controller instance
            this.controller = controller;
        }
        private void button1_Click(object sender, EventArgs e)
        {
            if (controller != null)
                controller.MethodA();
        }
    }
    //This will be another class/ controller for your view.
    public class Controller
    {
        public void MethodA() { }
    }