文本框.更改前的文本最后值
本文关键字:文本 最后 | 更新日期: 2023-09-27 18:13:46
我有问题与以下代码:一切正常,我想做的是,
当用户改变文本框时,如果它通过了所有的条件(你可以看到我的代码)它将触发一个更新一行的DB查询。现在为了触发这个查询,我需要这个文本框的旧值,在更改之前,现在我如何在不添加变量来存储每个文本框的旧值的情况下做到这一点,我有几个。
是否存在记住旧值的事件?
谢谢。
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();
}
}
嗯,我会建议您创建并存储您的数据库对象的ID (primay key),您的TextBox属性所引用的。通过这样做,您将能够通过ID对对象进行更新,而不是通过最后一个TextBox值。
另一种方法是通过实体框架来组织你的逻辑,这样你就可以改变你的模型对象,这些变化反映在你的数据库端。
你可以使用你的TextBox的Tag属性。当你觉得合适的时候(可能在第一次使用它作为"new"之后)存储"old"值。