我正在開發需要loggging應用C#DialogResult的習慣密切形式
我已經開發了以下幾種形式: - frmMain - 自舉窗口時frmLogon
形式主要發佈窗體應用程序。在主窗體的「顯示」事件中,FrmLogon窗體顯示爲對話框。
但是,當自動將DialogResult設置爲OK時,表單不會關閉,程序僅在手動點擊「登錄」按鈕時起作用,這會觸發完全相同的功能。
我試圖關閉()表單登錄,但這留給我一個System.ObjectDisposedException。
有什麼建議嗎?
FrmMain.CS
private void OnFormShown(object sender, EventArgs e)
{
OnClickMenuLogon(sender, e);
}
private void OnClickMenuLogon(object sender, EventArgs e)
{
if (IsLoggedOn())
{
G.LogOff();
User = null;
OnLoggedOff();
}
else
{
FrmLogon logon = new FrmLogon(G, true);
DialogResult result = logon.ShowDialog();
if (result == DialogResult.OK)
{
User = logon.User;
_hostName = User.Name + " @ " + (String.IsNullOrEmpty(logon.HostName) ? Environment.MachineName : logon.HostName);
OnLoggedOn();
}
}
}
FrmLogon.CS
private void OnLogOnSuccess(object sender, LoggedOnEventArgs e)
{
tbStatus.Text = $"[{DateTime.Now.ToString("HH:mm:ss")}]: Successfully logged on.\r\n" + tbStatus.Text;
User = _g.LoggedUser;
HostName = tbHost.Text;
DialogResult = DialogResult.OK;
}
編輯:當使用
this.DialogResult = DialogResult.OK;
this.Close();
發生以下情況例外: Exception screenshot
而不是DialogResult = DialogResult.OK;嘗試this.Close(); –
@StephenWilson根據[正確使用DialogResult]不正確(http://stackoverflow.com/questions/16846573/using-dialogresult-correctly) – stuartd
@StephenWilson this.Close將返回他DialogResult.Cancel –