Ich habe eine winform-Anwendung, wo ich meinen eigenen kleinen Farbwähler geschrieben habe, der nur Systemfarben anzeigt. Es ist im Grunde eine TableLayoutPanel
mit einer Reihe von kleineren Panels hinzugefügt, auf die ich nur die Hintergrundfarbe gesetzt.Schließen eines Formulars, das von ShowDialog() geöffnet wurde
Ganz einfach:
Jetzt bin ich Öffnen dieses Formulars mit:
using (frmColourWindow colourPicker = new frmColourWindow (Cursor.Position.X, Cursor.Position.Y, findingPriority))
{
colourPicker.ShowDialog();
if (!colourPicker.SelectedColor.IsEmpty)
{
pnlColor.BackColor = colourPicker._SelectedColor;
}
}
und Schließen mit durch die DialogResult
Einstellung, wenn der Benutzer auf eine der angeklickt Farbfelder.
Das alles funktioniert ziemlich gut, die einzige Sache, die ich nicht richtig verwalten kann, ist das Schließen des Formulars, wenn es den Fokus verliert (z. B. wenn der Benutzer irgendwo anders klickt oder zu tippen beginnt). Ich habe mir die Ereignisse Deactivate
, LostFocus
und Leave
angesehen. Ich kann einfach nicht scheinen, dass diese Ereignisse ausgelöst werden, wenn ich will. Vielleicht vermisse ich etwas Offensichtliches?
Wenn Sie ein Formular mit 'ShowDialog()' öffnen, können Sie dieses Formular nur verwenden, bis es geschlossen wurde. Wenn ich verstehe, was Sie wollen, verwenden Sie 'Show()' anstelle von 'ShowDialog()', dann sollten diese Ereignisse ausgelöst werden. –
Wählen Sie das Panel und klicken Sie auf ApplicationSettings. Drücken Sie F1, wenn Sie weitere Hilfe benötigen. –
@Bojan, wie bekomme ich dann die ausgewählte Farbe von meinem Farbwähler, wenn ich 'Show()' und dann 'Close()' das Formular programmatisch aus dem Farbwähler verwende? Da das kleine Feld auf der Rückseite auf diese Farbe eingestellt werden muss, nachdem das Formular –