Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/338.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 - Fatal编程技术网

C# 简化积垢按钮

C# 简化积垢按钮,c#,winforms,C#,Winforms,嗨,我想简化我的CRUD按钮在我的基础形式。为此,我认为将所有这些转换为自定义控件是最佳实践 我提到了火箭框架,下面是他写的。他创建了一个自定义控件,其中包含CRUD按钮和搜索按钮,并在同一行中加载所有按钮对齐。然后,当我们需要某个特定的按钮时,我们可以像我们对网站图像所做的那样,抓取该按钮的位置,将所有图像变成一个图像。这听起来不错 问题: 1) 如何将此自定义控件按钮应用于GUI窗体? 2) 如何简化“我的CRUD”按钮的确认消息和向用户提示结果消息?我觉得在按下保存按钮时多次在我的crud

嗨,我想简化我的CRUD按钮在我的基础形式。为此,我认为将所有这些转换为自定义控件是最佳实践

我提到了火箭框架,下面是他写的。他创建了一个自定义控件,其中包含CRUD按钮和搜索按钮,并在同一行中加载所有按钮对齐。然后,当我们需要某个特定的按钮时,我们可以像我们对网站图像所做的那样,抓取该按钮的位置,将所有图像变成一个图像。这听起来不错

问题:
1) 如何将此自定义控件按钮应用于GUI窗体?
2) 如何简化“我的CRUD”按钮的确认消息和向用户提示结果消息?我觉得在按下保存按钮时多次在我的crud按钮上写入
“您确定要保存/删除”
,并且在save()事件后写入
“此记录保存成功/失败”
,是多余的。无论如何,我可以通过将它放到基于表单的CRUD自定义控件来简化它?例如,当用户按下Save按钮时,它将运行based form确认消息,并将继续在datamodel上运行Save()事件,然后返回based form以获得结果消息“successsfully Save”

请注意

1)一旦编译完毕,工具箱中将提供一个用户控件。查看工具箱中最顶层的组

2) 如果已挂接AdminController的DeleteClick事件,则以下代码将调用该事件:

if (DeleteClick != null)
    DeleteClick(sender, e);

在调用删除事件之前实现确认消息,请考虑将上述代码更改为:

    if (DeleteClick != null)
    {
        if (MessageBox.Show("Are you sure to save?", "Please Confirm", MessageBoxButtons.OKCancel) == DialogResult.OK)
        {
            DeleteClick(sender, e);
        }
    }
要实现成功/失败消息,挂接事件的委托将通过传回布尔值让AdminController知道更新是否成功。这可以通过使用自定义EventArgs类来实现

public class AdminControllerEventArgs : EventArgs
{
    public bool Success;

    public AdminControllerEventArgs() : base()
    {
        Success = true;
    }
}
以及将AdminController中的事件声明更改为使用AdminControllerEventArgs:

public partial class AdminController : UserControl
{
    public delegate void AdminControllerEvent(object sender, AdminControllerEventArgs e);

    public event AdminControllerEvent AddUpdateClick;
    public event AdminControllerEvent DeleteClick;
然后,成功的价值可以通过以下方式进行测试:

    AdminControllerEventArgs e = new AdminControllerEventArgs();

    if (DeleteClick != null)
    {
        if (MessageBox.Show("Are you sure to save?", "Please Confirm", MessageBoxButtons.OKCancel) == DialogResult.OK)
        {
            DeleteClick(sender, e);

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

当数据库更新失败时,连接到新事件的代理将需要设置
e.Success=false

您好,很抱歉回复太晚。我尝试了您的代码,但是
if(adminControllerEventArgs.Success)
没有成功。我改为公众静态布尔成功;它是有效的。至于你在
e.Success=false
上说的话,你的意思是我必须把它放在它返回失败的每个函数上吗?嗨,我在添加了你的代码后无法构建。“删除单击(发件人,e);”有一些无效的论点。我认为这是由于
公共委托无效AdminControllerEvent(对象发送者,AdminControllerEventArgs e)
你能帮忙吗?我试着将私有的void btnDelete\u Click(object sender,EventArgs e)更改为
private void btnDelete\u Click(object sender,administrationlereventargs e)
,但这会导致“this.btnDelete.Click+=new System.EventHandler(this.btnDelete\u Click);”的错误“错误2‘btnDelete_Click’与委托‘System.EventHandler’匹配时没有重载”您好,我在上一个代码示例的开头添加了一行额外的代码,创建了AdminControllerEventTargets实例,这应该可以解决您的一个问题。
    AdminControllerEventArgs e = new AdminControllerEventArgs();

    if (DeleteClick != null)
    {
        if (MessageBox.Show("Are you sure to save?", "Please Confirm", MessageBoxButtons.OKCancel) == DialogResult.OK)
        {
            DeleteClick(sender, e);

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