Modales Dialogfeld
Erstellt habe ich zwei Formen in meiner Windows-Anwendung.
Einer Form fungiert als eine Form und die andere form wirkt wie ein MODALES DIALOGFELD.
Form-Dialogfeld enthält eine Schaltfläche und Ein Textfeld ein.
Wenn diese Schaltfläche angeklickt wird das MODALE DIALOGFENSTER angezeigt werden sollen.
Dieses Dialogfeld enthält auch Eine Textbox und Zwei Buttons(Ok und Abbrechen).
Nun, wenn dieses Dialogfeld angezeigt wird, wird die TextBox des Dialogfensters enthalten sollte der eingegebene Wert in der textbox von Form1.
Benutzt habe ich folgende Codierung um diese Aufgabe zu erfüllen.
Form1 Kodierung:
public string UserName;
private void btnFn_Click(object sender, EventArgs e)
{
UserName = txtUserName.Text;
frmFnC objFnC = new frmFnC();
objFnC.ShowDialog();
objFnC.txtUserName.Text = UserName;
}
Code in MODALEN DIALOGBOX OK-Taste:
Bitte beachten Sie, dass die Abbrechen-Schaltfläche ist nur aktiviert, wenn die Schaltfläche OK geklickt wird.
Kodierung:
private void btnOk_Click(object sender, EventArgs e)
{
btnCancel.Enabled=true;
}
private void btnCancel_Click(object sender,EventArgs e)
{
this.Close();
}
Das problem, das ich bin vor ist der eingegebene Wert durch den Benutzer in das BENUTZERNAME-Textfeld wird nicht angezeigt in der TEXTBOX in das MODALE DIALOGFELD. Stattdessen ist es die Anzeige der textbox als leer.
Was sollte ich tun, um die eingegebenen Werte durch den Benutzer in der textbox auf dieser modale dialog-box?
Kann mir jemand helfen bei der Ausführung der gewünschten Aufgabe?
Vielen Dank im vorraus!!!!!!
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ändern:
Zu:
Das problem, das Sie haben ist, dass Sie das Dialogfeld anzeigen, bevor Sie den Benutzernamen an.
Da der dialog modal ist, wird es nicht gehen, um die nächste Zeile, bis der dialog geschlossen wird. Wollen Sie diese swap-Linien, Runde und es wird gut sein.
Möchte ich darauf hinweisen, dass das freilegen der textbox öffentlich ist nicht, eine wirklich gute Idee, obwohl. Sie wollen nicht den Verbraucher zu haben implementational wissen Ihres dialogs.
Wäre es besser, wenn Sie einen parameter auf der form-Konstruktor und legen Sie dann den textbox-text aus, der. Dann könnten Sie Folgendes tun:
So, der konsument ist nicht angewiesen auf frmFnC mit einem Textfeld namens txtUserName was bedeutet, du bist frei zu ändern, das Innenleben, wie Sie bei der Anzeige der Benutzernamen. Zum Beispiel könnten Sie es ändern, um ein Etikett, und Sie würden nicht brechen, die der Verbraucher code! Alle Verbraucher wissen muss, ist, dass Sie passieren soll, einem Benutzernamen in den Konstruktor.
Legen Sie die text-Feldes in der Dialog vor dem Aufruf
ShowDialog
:Müssen Sie die swap-Einstellung der text und die ShowDialog:
Kraft oder ein Neuzeichnen der dialog danach.
Um der Lage sein zu setzen (und erhalten), den Inhalt der text-box in der modalen form, fügen Sie diesen code, um das Formular:
Dann, in der anderen form, können Sie die Benutzer-name:
Ich muss auch Sie bitten, über die Beziehung zwischen OK und Abbrechen-Schaltflächen im modalen dialog-Formular; es scheint ein bisschen seltsam, würde der Benutzer müssen Sie zuerst klicken Sie auf OK, um die Abbrechen-Schaltfläche aktiviert ist, und klicken Sie dann auf Abbrechen, um tatsächlich schließen Sie das Formular.
Ich würde vorschlagen, um nicht irgendwelche event-Handler für die click-Ereignisse der Schaltflächen, sondern setzen Sie die entsprechenden Werte Ihrer
DialogResult
- Eigenschaft, und legen Sie dann die modale form istAcceptButton
undCancelButton
Eigenschaften. Auf diese Weise können Sie überprüfen, wie der dialog geschlossen wurde: