[英]Textbox.Text last value before the change?
我在執行以下代碼時遇到了麻煩:一切工作正常,我想做以下事情,
當用戶更改文本框時,如果通過了所有條件(您可以看到我的代碼),它將啟動數據庫查詢,該查詢將更新一行。 現在,為了觸發此查詢,我需要此文本框的舊值,然后再進行更改,現在,我如何在不使用addind變量的情況下執行此操作來存儲每個文本框的舊值,我幾乎沒有。
是否有任何事情可以紀念舊的價值?
謝謝。
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();
}
}
好吧,我建議您創建並存儲您的TextBox屬性所引用的數據庫對象的ID(主鍵 )。 這樣,您將能夠通過ID而不是最后一個TextBox值對對象進行UPDATE。
另一種方法-是通過Entity Framework來組織邏輯,以便您可以更改模型對象,而這些更改將反映在數據庫端。
您可以利用TextBox的Tag屬性。 只要您認為合適就存儲“舊”值(也許在第一次將其用作“新”值之后)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.