2011-05-26 25 views

Respuesta

7

Si he entendido bien su pregunta debe ser capaz de lograr lo que desea mediante el uso de algo como esto:

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)); 
} 

Esto a su vez MainForm una ventana secundaria de la toma de ventana especificada siempre aparece arriba. Yo uso ShowDialog en el ejemplo, pero esto también debería funcionar para Show. Esto es específico para Windows Forms.

En WPF puede probar lo siguiente:

var helper = new WindowInteropHelper(/* your Window instance */); 

helper.Owner = // Set with handle for the parent 

rápidamente me probamos este después de mostrar la ventana de WPF y parece que ha funcionado como se esperaba, pero el conocimiento de WPF no es tan grande.

+0

Ok, intentaré esto, pero ... ¿esto es imposible para la clase Window? Ya tengo un código basado en Windows con XAML. – Svisstack

+0

Supuse Windows Forms, por lo que esto no sería aplicable para una ventana de WPF. –

+0

Actualicé la respuesta con una posible solución en WPF, pero no hago ninguna garantía ... :) –

3

Creo que la Manija será de solo lectura; por lo tanto, la propiedad .Parent es de solo lectura. Sin embargo, la propiedad .Owner tiene un getter y un setter (ref. MSDN) ... sin embargo, debe tener una referencia a la ventana principal.

Sin más información, no podré proporcionar mucho más que eso.

Si los padres su candidato es un administrado ventana, active esta link.

Cuestiones relacionadas