嗨我想在我的基础表单中简化我的CRUD按钮。为此,我认为将所有这些转换为自定义控件是最佳实践。
我提到了Rocket框架,这就是他写的如下所示。他创建了一个自定义控件,它有CRUD按钮和搜索按钮,并且loadAll按钮对齐在同一行。然后,当我们需要特定的特定按钮时,我们可以抓住该按钮的位置,就像我们为网站图像所做的那样,我们将所有图像变成1个图像。这对我来说听起来不错。
问题:
1)如何将此自定义控制按钮应用于我的GUI表单?
2)如何为我的CRUD按钮简化确认消息并向用户提示结果消息?在按下保存按钮并在save()事件后"Are you sure to save/ delete"
按下"This record is saved successfully / failed"
时,我觉得多次在我的所有crud按钮上写 public partial class AdminController : UserControl
{
public event EventHandler AddUpdateClick;
public event EventHandler DeleteClick;
public event EventHandler CreateNewClick;
public event EventHandler RefreshClick;
public event EventHandler FilterClick;
public event EventHandler LoadAllClick;
public AdminController()
{
InitializeComponent();
}
private void buttonDelete_Click(object sender, EventArgs e)
{
if (DeleteClick != null)
DeleteClick(sender, e);
}
private void buttonAddUpdate_Click(object sender, EventArgs e)
{
if (AddUpdateClick != null)
AddUpdateClick(sender, e);
}
private void buttonCreateNew_Click(object sender, EventArgs e)
{
if (CreateNewClick != null)
CreateNewClick(sender, e);
}
private void buttonLoadAll_Click(object sender, EventArgs e)
{
if (LoadAllClick != null)
LoadAllClick(sender, e);
}
private void buttonFilter_Click(object sender, EventArgs e)
{
if (FilterClick != null)
FilterClick(sender, e);
}
private void buttonRefresh_Click(object sender, EventArgs e)
{
if (RefreshClick != null)
RefreshClick(sender, e);
}
}
是多余的。无论如何,我可以通过将它放到基于CRUD自定义控件的基础格式来简化这个?例如,当用户按下保存按钮时,它将运行基于表单的确认消息,它将继续运行数据模型中的Save()事件并返回基础表单以获得结果消息“成功保存”。
{{1}}
请咨询
答案 0 :(得分:1)
1)编译完成后,工具箱中将提供用户控件。查看工具箱中最顶级的组。
2)以下代码调用AdminController的DeleteClick事件(如果已挂钩):
if (DeleteClick != null)
DeleteClick(sender, e);
要在调用delete事件之前实现确认消息,请考虑将上述代码更改为:
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
。