Если я правильно понял ваш вопрос, вы сможете достичь желаемого, используя что-то вроде этого:
class Win32Window : IWin32Window
{
IntPtr handle;
public Win32Window(IntPtr handle) { this.handle = handle; }
public IntPtr Handle
{
get { return this.handle; }
}
}
static void Main()
{
IntPtr targetParent = // Get handle to the parent window
new MainForm().ShowDialog(new Win32Window(targetParent));
}
Это превратит MainForm
дочернее окно указанного окна, заставляя его всегда появлятьсянад ним.Я использую ShowDialog
в примере, но это также должно работать для Show
.Это специфично для Windows Forms.
В WPF вы можете попробовать следующее:
var helper = new WindowInteropHelper(/* your Window instance */);
helper.Owner = // Set with handle for the parent
Я быстро попробовал это после показа окна WPF, и оно, казалось, работало, как ожидалось, но знание WPFне так уж велик.