c# - 关闭 C# Windows 窗体应用程序时重置模态窗体
问题描述
我正在编写一个与数据库接口的 C# Windows Forms App Online Store GUI。我必须做的一件事是处理已经在数据库中的客户。他们从主菜单表单中单击“回头客”按钮,然后输入他们的电子邮件和密码。然后将输入的数据与存储在数据库中的客户进行核对,如果经过验证,他们的用户信息将被填充到文本框(姓名、信用卡信息、CVS 等)中,并且订单表格变得可见。我在那里没有问题。我遇到的问题是,如果回头客成功登录,然后取消回到主菜单,下一个点击“回头客”按钮的人会拉出表单,其中第一个用户的信息已经填写并可见, 因为this.Close()
和this.DialogResult = DialogResult.Cancel
方法都只隐藏表单而不是实际关闭和释放它。但是,如果我this.Dispose()
在返回客户表单上使用它来释放它,它就无法重新打开。
我的问题是:有没有简单的方法来处理这个问题?我是用 C# 自学的,所以请原谅我的经验不足。感谢您提供的任何帮助。
根据请求,请参阅下面的 Form1(主菜单表单)代码:
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace Database_Interface_Project
{
public partial class Form1 : Form
{
// Removed SqlConnectionString for security purposes.
public SqlConnection cnn = new SqlConnection(connectionString);
// Main Menu Form
public Form1()
{
InitializeComponent();
}
// New Customer Form
Form2 newCustomer = new Form2();
private void newCusButt_Click(object sender, EventArgs e)
{
newCustomer.ShowDialog();
}
// Returning Customer Form
ReturningCustomer returningCustomer = new ReturningCustomer();
private void RetCusButt_Click(object sender, EventArgs e)
{
returningCustomer.ShowDialog();
}
private void exitButt_Click(object sender, EventArgs e)
{
this.Close();
}
// Manager Menu Form
Manager managerMenu = new Manager();
private void managerButt_Click(object sender, EventArgs e)
{
managerMenu.ShowDialog();
}
}
}```
解决方案
您只需要重新实例化returningCustomer 表单即可重置其字段。
private void RetCusButt_Click(object sender, EventArgs e)
{
using (var returningCustomer = new ReturningCustomer())
{
returningCustomer.ShowDialog();
}
}
Dispose()
在 using 块离开后自动调用 using 语句。
注意:在您的情况下,您需要ShowDialog
适当地处理以避免 GDI 泄漏,因为它具有使 GDI 对象保持活动状态的副作用。
推荐阅读
- c# - 如何为向导类型界面更新表中的单行
- java - ThymeLeaf:Bean 名称的 BindingResult 和普通目标对象都不能用作请求属性
- docker - 如何在docker容器中保存静态内容
- reactjs - 挂钩中反应类组件的 this.props.history.push('/some_route') 的等价物是什么?
- javascript - 使用 React 的主从 KendoGrid
- javascript - javascript中图像数据的简单数学运算
- websocket - 向具有多个 websocket 引用的客户端发送消息
- html - 如何以角度放置微调器
- redux - Redux-Toolkit:如何处理具有复合键的实体?
- c# - 构建在本地通过但在詹金斯服务器上失败,system.servicemodel.faultexception 无法加载文件或程序集和 system.timeoutexception