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