Выявите окно в WPF

210
задан gmetax 6 December 2016 в 08:11
поделиться

5 ответов

Хорошо я выяснил работу вокруг. Я выполняю вызов от захвата клавиатуры, используемого для реализации горячей клавиши. Вызов работает как ожидалось, если я поместил его в BackgroundWorker с паузой. Это - клудж, но я понятия не имею, почему это не работало первоначально.

void hotkey_execute()
{
    IntPtr handle = new WindowInteropHelper(Application.Current.MainWindow).Handle;
    BackgroundWorker bg = new BackgroundWorker();
    bg.DoWork += new DoWorkEventHandler(delegate
        {
            Thread.Sleep(10);
            SwitchToThisWindow(handle, true);
        });
    bg.RunWorkerAsync();
}
2
ответ дан Factor Mystic 23 November 2019 в 04:35
поделиться
myWindow.Activate();

Попытки принести окно к переднему плану и активирует его.

, Который должен добиться цели, если я не неправильно понял и Вы хотите Поверх остальных окон поведение. В этом случае Вы хотите:

myWindow.TopMost = true;
301
ответ дан Morten Christiansen 23 November 2019 в 04:35
поделиться

Если пользователь взаимодействует с другим приложением, не может быть возможно принести Ваш к передней стороне. Как правило процесс может только ожидать устанавливать активное окно, если тот процесс уже будет приоритетным процессом. (Microsoft документирует ограничения в SetForegroundWindow () запись MSDN.) Это вызвано тем, что:

  1. пользователь "владеет" передним планом. Например, это было бы чрезвычайно раздражающим, если бы другая программа украла передний план, в то время как пользователь вводит, по крайней мере прерывая ее рабочий процесс, и возможно вызывая непреднамеренные последствия, поскольку ее нажатия клавиш, предназначенные для одного приложения, неправильно истолкованы преступником, пока она не замечает изменения.
  2. Предполагают, что каждая из двух проверок программ, чтобы видеть, является ли его окно передним планом и попытками установить его на передний план, если это не. Как только вторая программа работает, компьютер представляется бесполезный, поскольку передний план возвращается между двумя в каждом переключении задач.
13
ответ дан Matthew Xavier 23 November 2019 в 04:35
поделиться

Если вам нужно, чтобы окно было впереди при первой загрузке, вы должны использовать следующее:

private void Window_ContentRendered(object sender, EventArgs e)
{
    this.Topmost = false;
}

private void Window_Initialized(object sender, EventArgs e)
{
    this.Topmost = true;
}
32
ответ дан 23 November 2019 в 04:35
поделиться

Проблема могла состоять в том, что поток, называя Ваш код от рычага не был инициализирован временем выполнения, настолько звонящие методы во время выполнения не работают.

, Возможно, Вы могли попытаться делать Вызывание для маршалинга кода потока UI для вызова кода, который приносит окно к переднему плану.

1
ответ дан joshperry 23 November 2019 в 04:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: