我正在将Delphi 7.0应用程序转换为.Net(2.0)。
在Delphi应用程序中有类似的实现,如“User Control”,所以我在C#应用程序中也做了同样的事情。
但是在Delphi中,可以在main(父)上编写UserControl的事件实现,不太可能在.Net中,必须(不确定)在UserControl级别执行它。
我的问题是,
注意:我通过委托/事件获得了我想要的东西,但我更喜欢在Delphi中完成它的方式
答案 0 :(得分:1)
您可以通过以下两种方式实现此目标:
UserCtr1.UserCtr2.UserCtrl3.Btn1
之类的代码来引用该按钮,并在表单代码中为其附加事件处理程序。我不喜欢这种方法,因为它打破了封装。但是,如果您认为用户控制的视图只是一个UI模板(没有任何行为),那么它可能适合您。另一种方法是在控制代码中使用本地事件处理程序,但让它们从Form调用相应的方法。这可以通过使用TopLevelControl
属性来完成。例如,在用户Ctrl 3代码
private void Btn1_Click(object sender,EventArgs e) { ((FormMain)this.TopLevelControl).Search(参数1); }
这种方法的问题是紧密耦合,形式和解决方法是注入一些接口来调用来自用户控件的函数。表单可以实现界面。可以通过某种IoC Container / DI框架将(接口)实例注入所有用户控件。