【发布时间】:2017-05-19 13:30:33
【问题描述】:
大家好,我检查了上一个问题,是的,我看到了,但这并没有真正解决我的问题。
我正在编写一个应用程序,它有两个表单,一个 mainForm 和一个密码表单。
该表格用于扫描两个代码,如果它们相等则匹配。您扫描第一个代码,然后扫描第二个代码。如果它们匹配它会弹出绿灯以显示它们匹配。如果代码不匹配,它会同时弹出一个红灯和一个密码表单,并将表单文本框锁定为只读,以便主管验证用户扫描的内容。
它正在做这一切。
问题是我希望当主管输入密码时它必须再次显示表单以便用户可以继续扫描,它正在这样做。但问题是当它打开一个新表格时,后面那个被锁定的表格并没有消失。我试图重置表格,它不起作用。请帮忙。
//object references of the Main Form
MainForm fm=new MainForm();
if ((txtPassword.Text =="This"
{
fm.BringToFront();
//Reset the form to a normal state
fm.lblResult.Visible = false;
fm.txtResult.Visible = false;
fm.chkMtn.Checked = false;
fm.chkVodacom.Checked = false;
//Clear the textBox of the form
fm.txtMainFormScan1.Text="";
fm.txtMainFormScan2.Text="";
set the focus on the fist Scan
fm.txtFirstScan.Focus();
}
The code above does not work. now i am using the one below.
if ((txtPassword.Text =="ThisPassword")
{
lblInstructPassword.Text = "Password correct";
txtPassword.Text = "";
fm.ControlBox = true;
//fm.Activate();
this.Hide(); //This Close the Password form
fm.Show();
fm.chkMtn.Checked = true;
}
即使我使用 //fm.ShowDialog,我也无法获胜。我还尝试使用 Mutex 来只允许应用程序的一个实例运行。结果为零。提前感谢您的帮助。
【问题讨论】:
-
难道你不能在你的主表单中写一个方法“ResetForm()”,然后从你的密码表单中调用它吗?
-
如果此应用程序将非常大,请考虑使用带有 MVVM 模式的 WPF 而不是 winforms。它提供了更多的功能和灵活性。
-
不会很大,它的主要作用只是解决一个问题,匹配以尽量减少用户手动扫描时的错误。
-
Aboc,我只是尝试创建一个 ResetForm() 方法并在密码表单上调用它。还是不行。