美好的一天,我檢查了以前的問題,是的,我看到了它們,但它並沒有真正解決我的問題。C#窗體窗體,運行兩種形式
我正在寫一個具有兩種形式的應用程序,它有一個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時,我也贏不了。我也嘗試使用互斥體來只允許運行一個應用程序的一個實例。結果是零。感謝您的幫助提前。
你不能只寫一個方法「ResetForm()」在主表單,並從密碼錶單中調用它? – Aboc
如果這個應用程序將會非常大,請考慮使用帶有MVVM模式的WPF而不是winforms。它提供了更多的力量和靈活性。 –
不會很大,它的主要功能是隻解決一個問題,匹配以最小化用戶在手動掃描時執行的錯誤。 –