繁体   English   中英

用户控制事件和替代

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM