2011-04-19 121 views
0

嗨,我想简化我的代码crud messagebox。我目前有几乎20页的CRUD表格有4个按钮的创建,更新删除和重置。我如何简化这个成为用户控件?让我不必须保留书面方式 “保存成功”, “对不起,错误”,....我怎样才能简化crud

我的代码

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(本,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; 
     } 
    } 

我觉得非常讨厌重写这一遍。

+2

一些代码将很好地展示你到底在做什么。 – Woot4Moo 2011-04-19 02:15:46

+0

我认为这取决于你如何设计你的用户界面。对我而言,通常我会通过删除和更新链接检索。通常选择是在加载时完成的,然后用户可以进行过滤,或者点击他们想要更新或删除的人。这3个在1页中汇集在一起​​。插入功能将以弹出窗口的形式出现,其中显示新的用户界面 – 2011-04-19 02:20:19

+0

我认为一个没有弹出的CRUD页面会更好。这将帮助你用左边的gridview和右边的一些控件来显示一个页面,例如文本框..点击gridview将显示这些数据到右侧的控件。 – VeecoTech 2011-04-19 02:28:58

回答

0

对不起,我的意思是提取不封装..字段可以封装,而方法提取。您可以从重构>提取方法中选择此选项。以主要形式编写这些方法并将其公开。然后在整个应用中使用它们。

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

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

例如,

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

现在,选择任何一个窗体中的Save按钮,进入属性> Events>,然后选择btnSave_Click。您可以在整个软件中使用相同的方法,只要您有相同的代码即可在任何地方运行。