大家好,我检查过上一个问题,是的,我看到了它们,但它并没有真正解决我的问题。
我正在编写一个有两种形式的应用程序,有一个mainForm和Password表单。
表单用于扫描两个代码并匹配它们是否相等。您扫描第一个代码然后扫描第二个代码。如果匹配则弹出绿灯以显示它们匹配。如果代码不匹配,它会同时弹出一个红灯和一个密码表单,并将表单文本框锁定到ReadOnly,以便主管验证用户扫描的内容。
正在做这一切。
问题是我想在主管输入密码时它必须再次显示表单以便用户可以继续扫描,它正在这样做。但问题是当它打开一个新形式时,后面的那个被锁定它不会消失。我试图重置表单,它不起作用。请帮助。
//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只允许运行一个应用程序实例。结果是零。感谢您的帮助。
答案 0 :(得分:0)
您正在做很多.Net应该为您做的工作。
所有其他都是可变的细节,你真正的问题是:
您使用ShowDialog()
在正确的路径上,因为这会禁用触发命令以显示对话框的窗口。您需要将密码逻辑作为该对话框表单的一部分,而不是父表单。这样您就可以将DialogResult
enum
值返回到父表单(如果有任何值),并让您绕过不必要的Focus()
折腾。
如果您希望呼叫表单消失并在您执行此操作时重新出现,请将呼叫包裹在ShowDialog()
和this.Hide()
this.Show()
来电中