首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >简化crud按钮

简化crud按钮
EN

Stack Overflow用户
提问于 2011-03-25 15:52:40
回答 1查看 385关注 0票数 0

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

我提到了Rocket框架,下面是他写的内容。他创建了一个自定义控件,该控件具有CRUD按钮和搜索按钮,并且loadAll按钮在同一行中对齐。然后,当我们需要某个特定的按钮时,我们可以像我们对网站图像所做的那样,抓取该按钮的位置,使所有图像成为1个图像。对我来说这听起来不错。

问题:

1)如何将此自定义控件按钮应用于我的GUI窗体?

2)如何简化我的CRUD按钮的确认消息和结果提示消息给用户?当我在save()事件之后按下save按钮和"This record is saved successfully / failed"时,我觉得在我所有的crud按钮上多次编写"Are you sure to save/ delete"是多余的。无论如何,我可以通过将它放到基于form CRUD的自定义控件中来简化它?例如,当用户按下Save按钮时,它将运行基于表单的确认消息,它将继续在数据模型上运行Save()事件,并返回到基于表单,以获得结果消息“successsfully save”。

代码语言:javascript
复制
 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);
    }
} 

敬请指教

EN

回答 1

Stack Overflow用户

发布于 2011-03-25 18:43:57

1)编译后,用户控件将从工具箱中可用。查看工具箱最顶部的组。

2)如果AdminController已经被钩住,下面的代码调用它的DeleteClick事件:

代码语言:javascript
复制
if (DeleteClick != null)
    DeleteClick(sender, e);

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

代码语言:javascript
复制
    if (DeleteClick != null)
    {
        if (MessageBox.Show("Are you sure to save?", "Please Confirm", MessageBoxButtons.OKCancel) == DialogResult.OK)
        {
            DeleteClick(sender, e);
        }
    }

为了实现成功/失败消息,挂起事件的委托将通过传回布尔值来让AdminController知道更新是否成功。这可以使用自定义的EventArgs类来实现

代码语言:javascript
复制
public class AdminControllerEventArgs : EventArgs
{
    public bool Success;

    public AdminControllerEventArgs() : base()
    {
        Success = true;
    }
}

并将AdminController中的事件声明更改为使用AdminControllerEventArgs:

代码语言:javascript
复制
public partial class AdminController : UserControl
{
    public delegate void AdminControllerEvent(object sender, AdminControllerEventArgs e);

    public event AdminControllerEvent AddUpdateClick;
    public event AdminControllerEvent DeleteClick;

然后,可以按如下方式测试成功的价值:

代码语言:javascript
复制
    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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5429841

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档