Chcę utworzyć przy użyciu okna C#
z ustawionym elementem nadrzędnym do zdefiniowanego uchwytu, jest to inny uchwyt okna procesu.C# Tworzenie okna - Definiowanie okna nadrzędnego
Ktoś wie, jak to zrobić?
Pozdrowienia,
Chcę utworzyć przy użyciu okna C#
z ustawionym elementem nadrzędnym do zdefiniowanego uchwytu, jest to inny uchwyt okna procesu.C# Tworzenie okna - Definiowanie okna nadrzędnego
Ktoś wie, jak to zrobić?
Pozdrowienia,
Gdybym zrozumiał swoje pytanie poprawnie powinieneś być w stanie osiągnąć to, co chcesz, za pomocą czegoś takiego:
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));
}
To okaże MainForm
okno podrzędne określonego podejmowania okna zawsze pojawia się nad nim. Używam ShowDialog
w przykładzie, ale powinno to również działać dla Show
. Jest to specyficzne dla Windows Forms.
W WPF można spróbować wykonać następujące czynności:
var helper = new WindowInteropHelper(/* your Window instance */);
helper.Owner = // Set with handle for the parent
I szybko próbował tego po pokazując okno WPF i wydawało się działać zgodnie z oczekiwaniami, ale WPF wiedza nie jest taka wielka.
Wierzę, że uchwyt będzie tylko do odczytu; dlatego właściwość .Parent
jest tylko do odczytu. Jednak właściwość .Owner
ma program pobierający i ustawiający (ref. MSDN) ... jednak musi istnieć odwołanie do okna nadrzędnego.
Bez dodatkowych informacji nie będę w stanie zapewnić znacznie więcej.
Jeśli Twoim rodzicielskim kandydatem jest niezarządzane okno, sprawdź to link.
OK, spróbuję tego, ale ... jest to niemożliwe dla klasy Window? Mam już kod oparty na Window z XAML. – Svisstack
Założono, że Windows Forms, więc nie będzie to miało zastosowania do okna WPF. –
Zaktualizowałem odpowiedź możliwym rozwiązaniem w WPF, ale nie mam żadnych gwarancji ... :) –