2013-05-16 2 views
0

다음 코드에 문제가 있어요 : 모든 것이 제대로 작동하고, 나는 다음과 같은 일을 할 싶어 무엇을 ,이 모든 조건을 통과하면 Textbox.Text 변경 전 마지막 값?

사용자가 (u는 내 코드를 볼 수 있습니다, 텍스트 상자를 변화) 행을 업데이트 할 DB 쿼리가 실행됩니다. 이제이 쿼리를 실행하려면 변경 전,이 텍스트 상자의 이전 값이 필요합니다. 이제는 addind없이 각 텍스트 상자의 이전 값을 저장하는 변수가 있습니다. 그 중 몇 개는 있습니다.

이전 값을 remmber하는 이벤트가 있습니까?

감사합니다.

private void txt1stRoom_Validated(object sender, EventArgs e) 
    { 
     if (txt1stRoom.Text == txt1stRoomHuman.Text || txt1stRoom.Text == txt2ndRoom.Text || txt1stRoom.Text == txt3rdRoom.Text) 
      MessageBox.Show("Error - Cannot Use Same Monster"); 
     else if (txt1stRoom.Text != string.Empty) 
     { 
      SqlConnection cn = new SqlConnection("Data Source=" + serverTbx.Text + ";Initial Catalog=" + dbNameTbx.Text + ";User ID=" + dbUserTbx.Text + ";Password='" + dbPassTbx.Text + "';"); 
      m_daoManager.init(cn); 
      string mobName = m_daoManager.getMonsterName(txt1stRoom.Text); 
      m_daoManager.close(cn); 
      if (mobName != string.Empty) 
      { 
       // 
       var result1 = MessageBox.Show("Are You Sure u want to change " +lblOrc.Text + "to "+ mobName+ " , Please Notice - This will apply the changes to your database aswell!","Are You Sure?, Please Confirm this Change!", MessageBoxButtons.YesNo); 
       if (result1 == System.Windows.Forms.DialogResult.Yes) 
       { 
        m_daoManager.init(cn); 
        foreach (int zoneID in Maps.Keys) 
        { 
m_daoManager.updateMonstersByZone(BeforeChangetxt1stRoom.Text, AfterChangetxt1stRoom.text, zoneID); 
        } 
        m_daoManager.close(cn); 
        lblOrc.Text = mobName; 
        lblOrc.ForeColor = Color.Green; 
        Properties.Settings.Default.lblOrc1 = lblOrc.Text; 
        Properties.Settings.Default.lblOrc1Color = lblOrc.ForeColor; 
       } 
      } 
      else 
      { 
       MessageBox.Show("No Monster Found Under this ID"); 
       txt1stRoom.Text = string.Empty; 
       lblOrc.Text = "Enter Mob ID"; 
       lblOrc.ForeColor = Color.Red; 
       Properties.Settings.Default.lblOrc1 = lblOrc.Text; 
       Properties.Settings.Default.lblOrc1Color = lblOrc.ForeColor; 
      } 
      Properties.Settings.Default.Save(); 
     } 
    } 

답변

1

글쎄, 난 당신이 만들 조언하고 텍스트 상자의 속성을 의미 당신의 데이터베이스 객체의 ID (primay key)를 저장한다. 이렇게하면 ID로 개체를 업데이트 할 수 있지만 마지막 TextBox 값으로는 처리 할 수 ​​없습니다.

또 다른 방법은 Entity Framework을 사용하여 논리를 구성하는 것입니다. 그러면 모델 개체를 변경하고 이러한 변경 사항이 데이터베이스 측에 반영됩니다.

0

TextBox의 Tag 속성을 사용할 수 있습니다. 당신이 그것이 적절하다고 느낄 때마다 "오래된"값을 저장하십시오 (처음에는 "새로운"으로 사용한 후).