Я пытаюсь выяснить, как при простом отображении диалогового окна WinForms (код ниже) я получаю следующее исключение и стек вызовов. Это не происходит постоянно, но я вижу это в журналах моих исключений. Есть идеи? Я не могу понять, что будет ссылаться на удаленный объект?
Я проверил (через оставшуюся часть стека вызовов), что приложение не закрывается, оно работает нормально.
System.ObjectDisposedException: Cannot access a disposed object.
Object name: 'MainForm'.
at System.Windows.Forms.Control.CreateHandle()
at System.Windows.Forms.Form.CreateHandle()
at System.Windows.Forms.Control.get_Handle()
at System.Windows.Forms.Control.GetSafeHandle(IWin32Window window)
at System.Windows.Forms.Form.ShowDialog(IWin32Window owner)
at MyApp.MainForm.PromptForProfile()
at MyApp.MainForm.LoadProfile()
at MyApp.MainForm.barButtonItem1_ItemClick(Object sender, ItemClickEventArgs e)
Это код для отображаемого диалога. Единственный "тупой" код - это, вероятно, обработчик textPassword_KeyDown. Я должен, вероятно, вытащить код, который я хочу, и не вызывать btnOK_Click таким образом.
public partial class ProfileForm : DevExpress.XtraEditors.XtraForm
{
public string _username;
public string _password;
public ProfileForm()
{
InitializeComponent();
}
private void btnOK_Click( object sender, EventArgs e )
{
_username = textUsername.Text;
_password = textPassword.Text;
}
private void textPassword_KeyDown( object sender, KeyEventArgs e )
{
if ( e.KeyCode == Keys.Enter )
{
btnOK_Click( sender, null );
this.DialogResult = DialogResult.OK;
e.Handled = true;
}
}
private void hyperLinkEdit1_Click( object sender, EventArgs e )
{
// show the proxy settings dialog
ProxyForm pform = new ProxyForm();
pform.ShowDialog();
}
}