首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何简化crud

如何简化crud
EN

Stack Overflow用户
提问于 2011-04-19 10:13:16
回答 1查看 206关注 0票数 0

嗨,我想简化我在crud消息框上的代码。我目前有近20多页的CRUD表单与4个按钮的创建,更新,删除和重置。如何将其简化为用户控件?这样我就不必继续写“保存成功”,“对不起,错误”,....

我的代码

代码语言:javascript
复制
 protected override void btnSave_Click(object sender, EventArgs e)
    {
        if (!validateBeforeSave()) return;

        if (MessageBox.Show(MessageManager.SaveAsk, "Are you sure?", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
        {
            try
            {                  
                BindValueToObject();                   

                if (Convert.ToInt32(lblEmpId.Text) == 0)
                {
                    user.Add();
                    ResetAfterSave(true, user.Id);
                    base.Success = true;
                }
                else
                {
                    user.Update();
                    ResetAfterSave(false, user.Id);
                    base.Success = true;
                }
                base.btnSave_Click(this, null);
            }
            catch (Exception ex)
            {
                Logger.Error(typeof(UsersForm), ex.ToString());
                base.Success = false;
                base.btnSave_Click(this, null);
            }
        }
    }
    protected override void btnDelete_Click(object sender, EventArgs e)
    {
        if (null == dgUser.CurrentRow) return;
        user.Id = (int)dgUser.SelectedRows[0].Cells["empId"].Value;

        try
        {
            if ((MessageBox.Show(MessageManager.DeleteAsk, "Are you sure to delete?", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes))
            {
                user.Delete();
                ResetAfterSave(false, 0);
                base.Success = true;
                base.btnDelete_Click(this, null);
            }
        }
        catch
        {
            base.Success = false;
            base.btnDelete_Click(this, null);
        }
    }

在我传入标志的地方,base.btnSave_Click( this,null);正在调用它。

代码语言:javascript
复制
 protected virtual void btnSave_Click(object sender, EventArgs e)
    {
        if (this.success)
            MessageBox.Show(MessageManager.SaveSuccess, "Success", MessageBoxButtons.OK, MessageBoxIcon.Information);
        else
        {
            MessageBox.Show(MessageManager.SaveFailed, "Fail to save", MessageBoxButtons.OK, MessageBoxIcon.Stop);
            return;
        }
    }

我觉得一遍又一遍地重写这篇文章非常烦人。

EN

回答 1

Stack Overflow用户

发布于 2011-04-19 18:44:39

对不起,我的意思是提取不能在方法提取时封装Encapsulating..fields。您可以从Refactor > Extract Method中选择此选项。在main表单中编写这些方法,并将其公开。然后在整个应用程序中使用它们。

我有一个比这更好的选择,但如果这样做是危险的,我想纠正自己。

我们所做的是在主窗体中声明事件处理程序为公共。

例如

代码语言:javascript
复制
public virtual void btnSave_Click(object sender, EventArgs e)
    {
        if (this.success)
            MessageBox.Show(MessageManager.SaveSuccess, "Success", MessageBoxButtons.OK, MessageBoxIcon.Information);
        else
        {
            MessageBox.Show(MessageManager.SaveFailed, "Fail to save", MessageBoxButtons.OK, MessageBoxIcon.Stop);
            return;
        }
    }

现在,在您的任何表单中选择任何保存按钮,转到属性>事件>并选择btnSave_Click。您可以在整个软件中使用相同的方法,前提是您有相同的代码可以在任何地方运行。

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

https://stackoverflow.com/questions/5710865

复制
相关文章

相似问题

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