Member 14047666 Ответов: 1

Форма Windows переходит в bakground, после нажатия alt+Tab она появляется в верхней части дисплея


Мое приложение представляет собой комбинацию WPF и Winforms.
Отображение формы windows в потоковом процессе без блокировки кода, но форма переходит в фоновый режим.
В событии дескриптора формы значение дескриптора равно нулю.

Форма должна отображаться в верхней части окна WPF.

public partial class MainWindow : Window
    {
     public MainWindow()
     {    
       InitializeComponent();            
       Thread processPostScanThread = new Thread(() => ProcessThreadScannedFile("test"));
       processPostScanThread.SetApartmentState(ApartmentState.STA);            
       processPostScanThread.Start();           
     }
     private object ProcessThreadScannedFile(string p1)
     {
       win_form sc = new win_form ();   
       Task.Run(() => sc.ShowDialog());  
       return true;
     }
   }


Примечание:
MainWindow = окно WPF
win_form = форма Windows

Что я уже пробовал:

Цитата:
Я пробовал использовать методы pinvoke, такие как (FindWindowA,SetForeGroundWindow и т. д.,)

этот.Сосредоточить();
этот.Активировать();
этот.BringFront();

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

Gerry Schmitz

Попытка асинхронного запуска модального диалога? Вам нужно решить, что вы хотите сделать.

Member 14047666

да я пытаюсь работать в асинхронном режиме

1 Ответов

Рейтинг:
2

Member 14047666

Если я определил самое верхнее свойство, то форма всегда будет сверху, независимо от любого окна.

RickZeeland

Да, это должно использоваться только для временных диалогов и тому подобного :)