2013-12-03 3 views
0

На некоторых компьютерах наше приложение для Windows Forms сбой каждый раз при открытии некоторых форм с этим стек вызовов:NullReferenceException в Form.OnVisibleChanged

Object reference not set to an instance of an object. 
    at System.Windows.Forms.Form.OnVisibleChanged(EventArgs e) 
    at System.Windows.Forms.Control.WmShowWindow(Message& m) 
    at System.Windows.Forms.Control.WndProc(Message& m) 
    at System.Windows.Forms.ScrollableControl.WndProc(Message& m) 
    at System.Windows.Forms.Form.WmShowWindow(Message& m) 
    at System.Windows.Forms.Form.WndProc(Message& m) 
    at DevExpress.XtraEditors.XtraForm.WndProc(Message& msg) 
    at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m) 
    at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m) 
    at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam) 
+0

Исключительные исключения исключений обычно не указывают на плохое наследование, как вы предложили с ответом. Вы внедрили Form.OnVisibleChanged, и если да, можем ли мы увидеть ваш код? – kjhf

+0

Нет, метод не переоценивается. Проблема заключается в том, что «Control control = this.AcceptButton as Control» не имеет дополнительной нулевой проверки в реализации 'Form.OnVisibleChanged' (в ветке, которая меняет положение курсора мыши, если включена в настройках мыши) – Bohdan

ответ

1

Когда функция Автоматически перемещать курсор на кнопку по умолчанию включена в Панель управления, аварийные ситуации приложения в Form.OnVisibleChanged, когда AcceptButton формы не получены от Windows.Forms.Control.

Это явно ошибка в Windows Forms, то documentation не говорит, что IButtonControl AcceptButton должен быть производным от Control.

+2

В нем говорится:« Позволяет * * control ** действовать как кнопка ". Учитывая исход, я бы сказал, что довольно ясно, что означает слово «контроль». –

+0

Хорошая точка. Тем не менее, бросая исключение NullReferenceException в некоторых невероятных условиях, далеко не лучший способ обеспечить соблюдение этого так называемого требования. – Bohdan

Смежные вопросы