2009-05-29 16 views
6

Ich habe ein Windows-Formular, das ein Dialogfeld öffnet, wenn beim Laden des Formulars bestimmte Bedingungen erfüllt sind. Das Problem ist, das Fenster bleibt nicht oben und ich kann immer noch auf das Elternobjekt klicken. Es gibt jedoch eine Schaltfläche in dem Formular, die, wenn sie gedrückt wird, das gleiche Fenster öffnet, wenn ich dies tue, funktioniert es wie erwartet (wie ein Dialogfenster).ShowDialog() macht das Fenster nicht modal

Gibt es ein Problem beim Anzeigen eines Dialogfelds beim ersten Laden eines Formulars?

+1

Haben Sie den Eigentümer richtig eingestellt? – OregonGhost

+0

Es könnte eine Reihe von Gründen dafür geben; Anders als zufällig zu raten, ist der einzige Weg, das Problem zu diagnostizieren, den Code zu sehen, den Sie verwenden. –

Antwort

2

Rufen Sie ShowDialog von der Form-Klasse auf? Weil es nur das übergeordnete Fenster setzt, wenn es von einem anderen Formular aufgerufen wird. Alternativ können Sie die Überladung mit dem Parameter IWin32Window verwenden, um den Besitzer spezifisch festzulegen.

0

können Sie das Problem erklären weiter, da dies mein Code, die nicht die Form, die sie selbst zeigen kann, bis der Dialog geschlossen wurde entweder Sie das übergeordnete gesetzt oder nicht

private void Form1_Load(object sender, EventArgs e) 
     { 
      //your functionality goes here  
      AboutBox1 box = new AboutBox1(); 
      box.ShowDialog(); 
     } 
    } 

auf der anderen Seite können Sie auch Überprüfen Sie mit der TopMost-Eigenschaft

0

Die ShowDialog-Methode muss aus dem Formular aufgerufen werden, das es sein Eltern/Eigentümer sein soll, damit es zu diesem Formular modal ist. Alternativ glaube ich, dass Sie den Besitzer eines Dialogs direkt einstellen können, aber ich musste das nie tun.

0

DaBomb,

zu tun, was Sie wollen, werden Sie Ihren modaler Dialog aus dem Konstruktor Ihrer Hauptform nennen müssen, nicht von dem Ereignis Form_Load.

Etwas wie folgt aus:

public Form1() 
    { 
     InitializeComponent(); 
     this.Show(); 
     Form2 popupForm = new Form2(); 
     popupForm.ShowDialog(); 
    } 
Verwandte Themen