简化crud按钮

时间:2011-03-25 07:52:40

标签: c# winforms

嗨我想在我的基础表单中简化我的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}}

请咨询

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