2011-04-19 156 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。您可以在整個軟件中使用相同的方法,只要您有相同的代碼即可在任何地方運行。