этот.TopMost = true не работает?
Я очень новичок в C# и все еще пытаюсь обойти его (с помощью некоторых очень терпеливых друзей).
у меня проблема с установкой новой формы windows TopMost
свойство true
. У меня есть две (почти) идентичные формы; 1, который работает нормально и один, который не делает.
обе формы имеют TopMost
свойство имеет значение true
.
- Form1 показывает окно, и когда я пытаюсь щелкнуть за ним, форма мигает несколько раз и выдает окна бип.
- Form2 также показывает форму, но когда я нажимаю за ней, форма сереет (или теряет фокус), и я могу щелкнуть по основной форме.
Я искал ответ на этот вопрос и нашел ответ, который предложил поставить this.TopMost = true;
в событие загрузки формы, но это не сработало.
единственное, что я изменил, что может или не может иметь эффекта, это то, что Form1 был создан с .NET 4.5, установленным в свойствах и перед созданием Form2, я изменил это на .NET 3.5 (профиль клиента). Я пытался изменить его, но это не помогло. Прежде чем я удалю и снова создам Form2, есть ли у кого-нибудь идеи?
заранее большое спасибо. (Если вам нужна дополнительная информация, пожалуйста, просто дайте мне знать)
6 ответов
верхний - это свойство, которое используется, чтобы убедиться, что одно окно всегда отображается выше всех остальных в приложении. Примером Microsofts был инструмент поиска и замены.
разница, которую вы находите, заключается в том, что Form1 был создан как модальный диалог с помощью ShowDialog. Диалоговое окно "показать" гарантирует, что ваша форма должна быть закрыта, прежде чем все другие окна приложения могут быть использованы снова. Например; использование формы для получения пользовательских данных для ввода в родительскую базу данных форм.
показать используется, когда вы не возражаете, если ваш пользователь закончил свой диалог или нет, например, позволяя пользователю использовать некоторую утилиту (e.G таймер, секундомер), который поможет в рамках основной функции программы.
единственное визуальное различие, о котором я могу думать при использовании разных .NET-фреймворков, - это разные диалоговые окна, такие как OpenFileDialog, которые были обновлены во всей структуре
эта ссылка от Microsoft подтверждает, что может быть ошибка в Windows 7 и Windows Server 2008 R2 я столкнулся с ней в системе Windows 7 Embedded и предоставленный патч исправить проблему, поэтому, пожалуйста, подумайте, чтобы взглянуть:)
http://support.microsoft.com/kb/2587473/en-us
надеюсь, что это поможет!
трудный способ сделать это! Работает 100%!
User32.AllowSetForegroundWindow((uint)Process.GetCurrentProcess().Id);
User32.SetForegroundWindow(Handle);
User32.ShowWindow(Handle, User32.SW_SHOWNORMAL);
У меня есть аналогичная проблема в моем решении. После использования перегруженной Show-функции она работала:
frm.TopLevel = true;
frm.TopMost = true;
frm.Show(this)
добавьте следующий код в тег показали событие:
this.TopMost = true;
this.Focus();
this.TopMost = true;