Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在可视化继承的情况下,事件处理的标准方法是什么?_C#_Winforms_Event Handling_Visual Inheritance - Fatal编程技术网

C# 在可视化继承的情况下,事件处理的标准方法是什么?

C# 在可视化继承的情况下,事件处理的标准方法是什么?,c#,winforms,event-handling,visual-inheritance,C#,Winforms,Event Handling,Visual Inheritance,我们知道,当一个表单在视觉上被继承时,它的所有控件都会在设计时被锁定。这个问题要求我们将事件处理程序放在基表单中。现在,如果我想将基本控件事件处理程序放在派生形式中,我应该怎么做 由于控件被锁定,双击控件以添加事件处理程序的方法不应该起作用 在可视继承的情况下,事件处理的行业标准方法是什么?在基本窗体上处理事件,并使用它调用虚拟方法。派生表单将覆盖该方法。处理基表单上的事件并使用它调用虚拟方法。派生表单覆盖该方法。设计器尊重基类成员上的访问修饰符。必须将基窗体控件的Modifiers属性从Pri

我们知道,当一个表单在视觉上被继承时,它的所有控件都会在设计时被锁定。这个问题要求我们将事件处理程序放在基表单中。现在,如果我想将基本控件事件处理程序放在派生形式中,我应该怎么做

由于控件被锁定,双击控件以添加事件处理程序的方法不应该起作用


在可视继承的情况下,事件处理的行业标准方法是什么?

在基本窗体上处理事件,并使用它调用虚拟方法。派生表单将覆盖该方法。

处理基表单上的事件并使用它调用虚拟方法。派生表单覆盖该方法。

设计器尊重基类成员上的访问修饰符。必须将基窗体控件的Modifiers属性从Private更改为Protected。重新编译。现在继承的表单可以访问该控件,您将很容易地重写属性并从设计器中分配事件处理程序。

设计器尊重基类成员上的访问修饰符。必须将基窗体控件的Modifiers属性从Private更改为Protected。重新编译。现在,继承的表单可以访问该控件,您将很容易重写属性并从设计器中分配事件处理程序。

另一种方法是在用户控件中添加事件(而不是虚拟方法),然后在触发内部事件时激发它。

另一种方法是在用户控件中添加事件(而不是虚拟方法)然后在触发内部事件时触发它。

+1。基本控件应尽可能隔离,所有访问应通过虚拟方法/实现的私有方法进行向上访问。+1。基本控件应尽可能隔离,所有访问应通过虚拟方法/实现的私有方法进行用于向上访问的私有方法。更改访问控制可能会导致设计更改,而这正是一些人希望做的。右键单击该控件,然后单击锁定控件。如果他们不愿意,他们不必更改设计,这应该是显而易见的。更改访问控制可能会导致设计更改,更重要的是有些人喜欢这样做。右键单击控件,然后单击锁定控件。如果他们不喜欢,他们不必更改设计,这应该是显而易见的。@Hans Passant的解决方案是在不引入任何其他复杂性的情况下解决问题的最有效方法。谢谢@Hans Passant。这是一个很大的帮助,因为我能够在短时间内修改我现有的应用程序。@Hans Passant的解决方案是在不引入任何其他复杂性的情况下解决问题的最有效方法。谢谢@Hans Passant。这是一个很大的帮助,因为我能够在短时间内修改我现有的应用程序。