C# 如何取消表单中的更改?
我有一个设置表单,在这个表单中,用户将更改不同的值,从数据库中添加/删除内容,我需要当用户点击“取消”按钮时,他所做的所有更改都将被取消并返回到上次保存的状态,这是如何工作的?最简单的方法是在用户点击“确定”之前根本不进行更改。列出所有必须完成的更改,并仅在“确定”时执行该列表。只需在“取消”时关闭表单。最简单的方法是,在用户点击“确定”之前,不要进行任何更改。列出所有必须完成的更改,并仅在“确定”时执行该列表。只需在取消时关闭表单。您可以使用C# 如何取消表单中的更改?,c#,.net,wpf,winforms,C#,.net,Wpf,Winforms,我有一个设置表单,在这个表单中,用户将更改不同的值,从数据库中添加/删除内容,我需要当用户点击“取消”按钮时,他所做的所有更改都将被取消并返回到上次保存的状态,这是如何工作的?最简单的方法是在用户点击“确定”之前根本不进行更改。列出所有必须完成的更改,并仅在“确定”时执行该列表。只需在“取消”时关闭表单。最简单的方法是,在用户点击“确定”之前,不要进行任何更改。列出所有必须完成的更改,并仅在“确定”时执行该列表。只需在取消时关闭表单。您可以使用BeginTransaction然后对数据库执行查询
BeginTransaction
然后对数据库执行查询
private static SqlTransaction transaction;
private static SqlConnection conn;
public static void BeginTransaction()
{
try
{
transaction = conn.BeginTransaction();
}
catch (SqlException ex)
{
throw ex;
}
catch (Exception ex)
{
throw ex;
}
}
如果用户单击“确定”,则执行CommitTransaction
:
public static void CommitTransaction()
{
try
{
transaction.Commit();
}
catch (SqlException ex)
{
throw ex;
}
catch (Exception ex)
{
throw ex;
}
}
public static void RollbackTransaction()
{
try
{
transaction.Rollback();
}
catch (SqlException ex)
{
throw ex;
}
catch (Exception ex)
{
throw ex;
}
}
如果用户单击取消,则执行回滚事务:
public static void CommitTransaction()
{
try
{
transaction.Commit();
}
catch (SqlException ex)
{
throw ex;
}
catch (Exception ex)
{
throw ex;
}
}
public static void RollbackTransaction()
{
try
{
transaction.Rollback();
}
catch (SqlException ex)
{
throw ex;
}
catch (Exception ex)
{
throw ex;
}
}
您可以在表单加载事件中使用BeginTransaction
,例如:
private void Form1_Load(object sender, EventArgs e)
{
conn.Open();
ClassName.BeginTransaction();
}
然后根据单击事件关闭连接。使用“取消”按钮,他所做的所有更改都将被取消并返回到上次保存的状态。如果单击“确定”按钮,所有更改都将提交到数据库
private void cancel_Click(object sender, EventArgs e)
{
ClassName.RollbackTransaction();
conn.Close();
}
private void ok_Click(object sender, EventArgs e)
{
ClassName.CommitTransaction();
conn.Close();
}
ClassName是定义连接的类。现在,您可以基于在Form\u Load
中打开的连接执行查询。直到用户按下“确定”或“取消”按钮。例如,您可以执行“从表中全部删除”按钮单击
private void deleteAll_Click(object sender, EventArgs e)
{
SqlCommand cmnd = CreateCommand("TRUNCATE TABLE TABLE_1", CommandType.Text);
cmd.ExecuteNonQuery();
}
并且对数据库进行更改(全部删除)与否,取决于用户单击
取消
或确定
您可以使用BeginTransaction
,然后对数据库执行查询
private static SqlTransaction transaction;
private static SqlConnection conn;
public static void BeginTransaction()
{
try
{
transaction = conn.BeginTransaction();
}
catch (SqlException ex)
{
throw ex;
}
catch (Exception ex)
{
throw ex;
}
}
如果用户单击“确定”,则执行CommitTransaction
:
public static void CommitTransaction()
{
try
{
transaction.Commit();
}
catch (SqlException ex)
{
throw ex;
}
catch (Exception ex)
{
throw ex;
}
}
public static void RollbackTransaction()
{
try
{
transaction.Rollback();
}
catch (SqlException ex)
{
throw ex;
}
catch (Exception ex)
{
throw ex;
}
}
如果用户单击取消,则执行回滚事务:
public static void CommitTransaction()
{
try
{
transaction.Commit();
}
catch (SqlException ex)
{
throw ex;
}
catch (Exception ex)
{
throw ex;
}
}
public static void RollbackTransaction()
{
try
{
transaction.Rollback();
}
catch (SqlException ex)
{
throw ex;
}
catch (Exception ex)
{
throw ex;
}
}
您可以在表单加载事件中使用BeginTransaction
,例如:
private void Form1_Load(object sender, EventArgs e)
{
conn.Open();
ClassName.BeginTransaction();
}
然后根据单击事件关闭连接。使用“取消”按钮,他所做的所有更改都将被取消并返回到上次保存的状态。如果单击“确定”按钮,所有更改都将提交到数据库
private void cancel_Click(object sender, EventArgs e)
{
ClassName.RollbackTransaction();
conn.Close();
}
private void ok_Click(object sender, EventArgs e)
{
ClassName.CommitTransaction();
conn.Close();
}
ClassName是定义连接的类。现在,您可以基于在Form\u Load
中打开的连接执行查询。直到用户按下“确定”或“取消”按钮。例如,您可以执行“从表中全部删除”按钮单击
private void deleteAll_Click(object sender, EventArgs e)
{
SqlCommand cmnd = CreateCommand("TRUNCATE TABLE TABLE_1", CommandType.Text);
cmd.ExecuteNonQuery();
}
并且对数据库的更改(全部删除)是否会进行,取决于用户单击
取消
或确定
这取决于您如何加载初始数据,如果您在每个步骤中保存更改,或仅当用户单击确定时保存更改。您需要在此处显示相关代码。这取决于您如何加载初始数据,如果您在每个步骤中保存更改,或者仅在用户单击“确定”时保存更改。您需要在此处显示相关代码。