C# 用户控制按钮

C# 用户控制按钮,c#,winforms,C#,Winforms,我想为我的crud按钮创建一个自定义控件。用户控件将具有以下代码 private void btnDelete_Click(object sender, EventArgs e) { if (MessageBox.Show("Are you sure to Delete?", "Please Confirm", MessageBoxButtons.OKCancel) == DialogResult.OK) { DeleteClick(sender, e

我想为我的crud按钮创建一个自定义控件。用户控件将具有以下代码

 private void btnDelete_Click(object sender, EventArgs e)
    {      if (MessageBox.Show("Are you sure to Delete?", "Please Confirm", MessageBoxButtons.OKCancel) == DialogResult.OK)
    {
        DeleteClick(sender, e); // this will read the code from GUI delete button

        if (DeleteResult.Success) 
        {
            MessageBox.Show("This record is deleted successfully.");
        }
        else
        {
            MessageBox.Show("This record is deleted failed.");
        }
    }
}

我的GUI

private void adminUserController_DeleteClick(object sender, EventArgs e)
{
    Repository.Delete(user);
}
问题:
1) 将DeleteResult布尔结果从GUI传递给用户控件的最佳方式是什么?如何为用户界面可以钩住的删除按钮创建事件?
2) 如果我将错误记录器代码放在用户控制按钮上,您认为这样做好吗?

将adminUserController中的调用替换为对新方法(foo)的调用

并调用foo而不是adminUserController\u


foo将返回所需的结果

如果您检查DeleteResult的“结果”,除非发布的代码中没有此类变量#1你如何尝试做这件事是好的#主应用程序中的2个日志错误不在用户控制级别。您好,我认为adminUserController\u DeleteClick应该是一个事件。当用户在GUI表单中单击delete按钮时,它应该与一个事件挂钩。我不知道当用户单击用户控件的delete按钮时如何运行foo()。请指教thanks@belinq ... 我不知道我是否理解正确。你有一个按钮。在该按钮的单击事件中,您已注册btnDelete\u单击。在要调用adminUserController\u Delete的处理程序中,单击并获取Repository.Delete(用户)调用的返回值。这样不可能。您必须直接调用Repository.Delete(user),或者将此调用包装到另一个返回所需值的函数(foo)中。因此,您可以通过按钮单击handle或adminUserController\u Delete单击抱歉来调用foo,因为我的问题您不清楚。我有一个UserControl,它有4个CRUD按钮。
btnDelete\u单击(对象发送者,事件参数)
是用户控件的事件。然后我将usercontrol拖到我的UI表单中。因此,每当用户单击UI表单上的Delete按钮时,我需要它首先从usercontrol触发事件,询问“您确定要删除吗”,然后触发
存储库。Delete(用户),然后返回到UserControl以显示它是否成功删除。@belinq。。。你应该考虑改变这个设计。。。看看MVC模式:您的用户输入事件(单击删除按钮)不应该处理数据。。。它们应该与更新数据模型和该模型视图的控制器交互。。。这确保了用户单击的删除按钮与此无关。但是,如果出于某种原因必须使用此设计,则可以将该usercontrol更改为将repository.delete()返回的最后一个值存储在具有公共getter的属性中,其他函数可以访问该属性
private DeleteResult foo(TypeOfUser user)
{
   return Repository.Delete(user);
}