Archiv verlassen und diese Seite im Standarddesign anzeigen : C# DialogResult.OK - Wie setzen?
darph
2007-02-04, 18:01:14
private String getNewFileName()
{
using (NewDataBaseCreatorForm ndf = new NewDataBaseCreatorForm())
{
if (ndf.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
System.Windows.Forms.MessageBox.Show(":D");
}
else
{
System.Windows.Forms.MessageBox.Show(":(");
}
}
return "";
}
In dem Erzeugten Form habe ich AcceptButton und CancelButton gesetzt. Wenn ich da jetzt in ein Textfeld was eingebe und dann auf Enter drücke, dann führt er die ButtonClick-Methode in meinem Dialogfenster aus. Dort rufe ich dann this.Close() auf. Und das ist wohl der Fehler, denn ich bekomme dann hier immer ":(". ;(
Wie kann ich denn das Fenster so schließen, daß mein DialogResult auch ok ist?
darph
2007-02-04, 18:02:27
Wieso fällt mir sowas immer ein, nachdem ich den Thread auch erstellt hab? :ugly2:
private void okButton_Click(object sender, EventArgs e)
{
if (pathIsValid() && fileNameIsValid() && passwordsMatch())
{
this.DialogResult = DialogResult.OK;
this.Close();
}
}
Wald, Bäume, hat sich erledigt. :ugly2:
Elemental
2007-02-06, 09:50:58
Das kannst du auch einfach im Designer setzen...
Du kannst auch bei einem Form die properties AcceptButton und CancelButton setzen.
Gruss
Bernd
darph
2007-02-06, 11:59:48
Das kannst du auch einfach im Designer setzen...
Du kannst auch bei einem Form die properties AcceptButton und CancelButton setzen.
Gruss
Bernd
Hatte ich ja. Hatte aber keinen Effekt. Das Fenster schließt sich zwar, es ward aber nichts "OK".
Hatte ich ja. Hatte aber keinen Effekt. Das Fenster schließt sich zwar, es ward aber nichts "OK".
Hast du der DialogResult Eigenschaft eines Buttons auch den entsprechenden Wert zugewiesen?
Elemental
2007-02-06, 17:18:35
Stimmt, ich glaub das DialogResult property für den OK Button muss man manuell setzen, auch wenn er als Accept-Button des Forms gesetzt ist.
Aber beim CancelButton wird das DialogResult afaik automatisch gesetzt, oder?
Monger
2007-02-06, 17:40:58
Zumindest in VB.net nicht (nutzt ja selbe Plattform). Wenn man ein Dialogfenster einfügt, generiert der im Hintergrund noch ein paar Zeilen Quellcode hinzu - unter anderem eben das Setzen des DialogResult.
Ob der DialogResult allerdings standardmäßig auf Cancel steht, weiß ich nicht. Auf jeden Fall sollte man sich nicht darauf verlassen! ;)
tokugawa
2007-02-06, 19:27:27
Stimmt, ich glaub das DialogResult property für den OK Button muss man manuell setzen, auch wenn er als Accept-Button des Forms gesetzt ist.
Aber beim CancelButton wird das DialogResult afaik automatisch gesetzt, oder?
Nein, AcceptButton und CancelButton haben mit dem DialogResult nichts zu tun, sondern bestimmen nur die "Default-Buttons" die beim Drücken von Enter und Escape getriggert werden.
Was für einen DialogResult diese zurückliefern bestimmt ausschließlich die DialogResult-Eigenschaft.
Habe es noch mal mit VS.NET 2005 und einem C# Projekt ausprobiert. Also wenn man der CancelButton Eigenschaft einen Button zuweist, wird die Form dann automatisch geschlossen, ohne dass der DialogResult Eigenschaft des Buttons etwas zugewiesen werden muss (der Designer fügt da auch nichts hinzu). Bei der AcceptButton Eigenschaft schließt sich die Form nicht automatisch, da muss man für den Button noch ein DialogResult setzen. Würde ich jetzt sogar als logisch erachten, da man ja bei Abbrechen eben ein Abbrechen/Schließen erwartet. AcceptButton sagt ja erst mal nichts anderes, als dass man die Aktion ausführen will, nicht ob sie dann tatsächlich auch erfolgreich war oder nicht. Auf der Form können ja falsche User Eingaben gemacht worden sein oder man möchte im OK Button Handler noch Aktionen ausführen. Genau so gut könnte man ja noch eine ProgressBar einblenden.
Nein, AcceptButton und CancelButton haben mit dem DialogResult nichts zu tun, sondern bestimmen nur die "Default-Buttons" die beim Drücken von Enter und Escape getriggert werden.
Was für einen DialogResult diese zurückliefern bestimmt ausschließlich die DialogResult-Eigenschaft.
Du irrst dich, bei der CancelButton Eigenschaft liefert die ShowDialog() Methode sehr wohl ein DialogResult.Cancel zurück.
vBulletin®, Copyright ©2000-2025, Jelsoft Enterprises Ltd.