Диалоговое окно теряет фокус в Windows XP - PullRequest
1 голос
/ 03 декабря 2010

У меня странная проблема.У меня есть приложение на C # .NET 2.0 и контекстное меню.Когда вы щелкаете правой кнопкой мыши по приложению, появляется контекстное меню, и одним из пунктов меню является «Параметры».Когда вы нажимаете опции, у меня появляется форма OptionsDialog (с помощью метода ShowDialog ()).Проблема в том, что в Windows XP фокус постоянно исчезает.Если я нажимаю на форму параметров, она на секунду фокусируется, а затем снова теряет!Я перепробовал все.На событии Deactivate я вызываю this.Focus (), но это, похоже, не имеет значения.Я также попытался сделать окно верхним, но все равно не работает.

Еще одна странная вещь заключается в том, что эта проблема возникает только в XP.Я попробовал это с Vista и Windows 7, и это работает отлично.XP делает что-то странное, хотя.У кого-нибудь есть мысли, как это решить?

Ответы [ 2 ]

1 голос
/ 03 декабря 2010

У человека здесь, похоже, такая же проблема: http://forums.devshed.com/c-programming-42/c-form-won-t-focus-on-control-535596.html

Это что-то вроде того, что с тобой происходит? Если у вас есть кнопка по умолчанию или элемент управления, который является первым значением tabStop, которое также отключается при запуске формы, это может быть причиной проблемы.

Проверьте все отключенные элементы управления в форме и убедитесь, что кнопка по умолчанию и элементы управления остановкой первой вкладки включены. (Совет: кнопка по умолчанию обычно должна быть «Отмена» в модальной форме, и она всегда должна быть включена.)

0 голосов
/ 03 декабря 2010

Если вы узнаете, какое окно имеет фокус, возможно, оно даст вам подсказку, что происходит.

Это небольшое демонстрационное приложение 1997 года поможет вам: http://www.microsoft.com/msj/0397/Win32/Win320397.aspx

...