我怎样才能简化crud

时间:2011-04-19 02:13:16

标签: c# winforms

您好我想在crud消息框上简化我的代码。我目前有近20页的CRUD表单,包含4个创建,更新删除和重置按钮。如何简化此操作以成为用户控件?所以我不得不继续写“保存成功”,“对不起,错误”,....

我的代码

 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);我在下面传递这个标志。

 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;
        }
    }

我觉得非常讨厌一遍又一遍地改写这个。

1 个答案:

答案 0 :(得分:0)

抱歉,我的意思是提取而不是封装..可以在提取方法时封装字段。您可以从Refactor>中选择此选项。提取方法。以主要形式编写这些方法并将其公之于众。然后在整个应用程序中使用它们。

我有比这更好的选择,但如果这样做有害,我想纠正自己。

我们所做的是以主窗体声明事件处理程序public。

例如。

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。您可以在整个软件中使用相同的方法,前提是您可以在任何地方运行相同的代码。