[英]User Control Events and Overrides
我在WinForm应用程序上具有典型CRUD之类的操作的用户控件 。
验证 , 插入 , 更新 , 清除 , 取消和删除 。
在每种形式上,我最终都添加click事件, ucPersonNav.btnValidate.Click += new EventHandler(btnValidate_Click);
,用于每个按钮。
我想知道的是,是否可以让事件本身位于用户控件上,并且让它们指向我逐个窗体覆盖的方法?
像这样->
namespace psUserControls
{
using System;
using DevExpress.XtraEditors;
public partial class ucVIUCCDwithWhoDoneIt : XtraUserControl
{
public ucVIUCCDwithWhoDoneIt()
{
InitializeComponent();
}
private void btnValidate_Click(object sender, EventArgs e)
{
ValidateEvent();
}
}
}
然后在表单上有这个->
void ValidateEvent()
{
if (dxValidDiagnosis.Validate())
{
if (planDiagnosisID != 0)
{
ucNavDiagnosis.btnUpdate.Enabled = true;
ucNavDiagnosis.btnDelete.Enabled = true;
}
ucNavDiagnosis.btnInsert.Enabled = true;
}
}
这可行吗? 是白痴吗? 如果是,那么是否,那么我需要采取什么步骤来完成这项工作?
谢谢
我认为..这不是一个坏主意..但是该方法将非常适合您的应用程序。
我们可以为CRUD按钮提供一个枚举-您指定的6个枚举项。
我们可以有一个事件处理程序-委托,它将上面的enum作为参数。 为此委托编写一个事件(MyButtonClickedEvent),该事件将在每个单击按钮的事件上触发。
在控件上,在每个单击按钮的事件上,都可以使用相应的枚举项作为参数来触发此事件。 例如,在单击“验证按钮”时,使用参数作为验证枚举项触发MyButtonClickedEvent。 在插入器按钮上单击时,使用与插入枚举项相同的参数触发相同的MyButtonClickedEvent。
这样,您将不得不处理表单上的单个事件。 您将触发控件中的其他事件。 但这只能执行一次。 在您的表单上,您将只编写一个处理程序-方法。 在此方法中,您可以根据枚举类型进行区分。 .Net在开关案例构造中支持枚举。 因此,您可以轻松识别必须执行的操作。
您控件的所有用户都将发现它更容易,因为他们只需要处理一个事件。 他们将忽略自己不感兴趣的开关构造中的情况。
希望这可以帮助。
您只需要将ValidateEvent
定义为一个事件。 在您的UserControl中:
public event EventHandler ValidateEvent;
在表格上:
ucNavDiagnosis.ValidateEvent += new EventHandler(<name of event handler function>);
但是,直接访问UserControl
的按钮可能不是一个好主意。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.