Ich habe eine Schaltfläche und ein ausgeblendetes Textfeld in meinem Hauptformular. Wenn ich den Knopf drücke, wird das Hauptformular ausgeblendet und das zweite Formular angezeigt. Wenn ich den Knopf auf dem zweiten Formular drücke, möchte ich wieder das Hauptformular anzeigen, aber dieses Mal muss ich das versteckte Textfeld anzeigen. Ich weiß, wie man den Text von einem Textfeld an ein anderes Formular weitergibt, aber nicht nur an den Verweis des Textfelds.C# Steuerreferenz an ein anderes Formular übergeben
Antwort
Sie übergeben besser die vollständige Hauptformularinstanz für das zweite Formular und erstellen eine öffentliche Funktion, um das Textfeld sichtbar zu machen oder um es herum eine Eigenschaft zu erstellen. Etwas wie:
//form1
Form2 second = new Form2(this);
}....
public void ShowTextBox()
{
textbox1.Visible=true;
}
//form2
Form parent;
public Form2(Form _parent)
{
parent=_parent;
}
///later
parent.Show();
parent.ShowTextBox();
Sie haben Ihre Antwort 2 Sekunden vor meinem Kommentar geschrieben;) –
Ich persönlich hasse es, einen Elternteil zu übergeben form Referenz zu einem Dialog/sub/Kind. Eines Tages, wenn Sie dieses Formular woanders wiederverwenden wollen (und mein, wie oft das passiert), haben Sie ein Chaos um zu refaktorieren. Die Veranstaltungen wären viel besser, IMO. – jleach
wie ein benutzerdefiniertes Ereignis klingt für mich wäre ein besserer Ansatz sein. Lassen Sie das sekundäre Formular ein Ereignis aussetzen, das zu jeder geeigneten Zeit ausgelöst wird (Drücken Ihrer Taste). Wenn Sie in Ihrer Hauptform Ihre Instanz Ihres zweiten Formulars erstellen, abonnieren Sie dieses Ereignis. Führen Sie dann Ihren Code aus dem Ereignis-Abonnement des Mainforms aus.
Dies hält die Kopplung auf den beiden Formen und führt zu viel leichter wartbar und erweiterbar Code (für den besten Effekt, verwenden Sie Schnittstellen, aber Ereignisse sind ein guter Mittelweg für das Lernen).
Etwas wie folgt aus: (es ist eine lange Zeit her ist, seit ich mit WinForms gearbeitet oder Ereignisse selbst, also wenn diese Veredelung kennen mich braucht lassen)
// your secondary/popup form's class
public partial class Form2 : Form
{
// add a custom event
public EventHandler<EventArgs> MyCustomEvent;
// link up your button click event
void InitializeComponent() {
myButton.Click += myButtonClick;
}
// when your button is clicked, raise your custom event
void myButtonClick(object sender, EventArgs, e) {
onMyCustomEvent();
}
// this "broadcasts" the event
void onMyCustomEvent() {
EventHandler<EventArgs> h = MyCustomEvent;
if (h != null) {
h(this, new EventArgs());
}
}
}
// your main form's class
public partial class MainForm
{
void InitializeComponent() {
// ...
}
void showForm2() {
var form2 = new Form2();
form2.MyCustomEvent += form2CustomEvent;
form2.Show();
}
void form2CustomEvent(object sender, EventArgs e) {
myHiddenTextBox.Visible = true;
}
}
Alles in allem ist dies ein viel besserer Ansatz in Bezug auf Code-Architektur. Nun ist es dem Popup egal, wer es öffnet (es hat keinen Verweis auf das Hauptformular), und das benutzerdefinierte Ereignis (was wirklich das ist, wonach Sie suchen) kann auf jeder gewünschten Steuerungsebene verwaltet werden, ohne andere zu stören Ding Arbeit (zum Beispiel vielleicht später möchten Sie möglicherweise eine andere Aktion haben, die das gleiche benutzerdefinierte Ereignis ausgelöst wird ...)
Denkanstoß.
- 1. Übergeben Sie das Datum an ein anderes Formular ändern Format
- 2. Ziel C: Übergeben eines NSStringFromSelector an ein anderes Objekt
- 3. ein anderes Modell an die Teilansicht übergeben
- 4. zeige ein anderes Formular
- 5. C# Steuerelemente und Steuerreferenz finden
- 6. Übergeben Array an ein anderes Skript mit Invoke-Command
- 7. Übergabe von Variablen in ein anderes Formular
- 8. Senden ausgewählter Listview-Daten an ein anderes Formular-Textfeld
- 9. So übergeben Sie den Wert der Zelle von datagridview an ein anderes Formular
- 10. Render ein anderes neues Formular
- 11. Wie setze ich ein anderes Formular als Anwendung in C#
- 12. Übergeben Sie ein anderes Objekt an die Hauptflasche Anwendung
- 13. Übergeben von bestimmten Daten an ein anderes Viewcontrol mit prepareForSegue
- 14. Wie preventDefault Anruf an ein anderes Ereignis übergeben?
- 15. Starten und übergeben Sie Argumente an ein anderes Projekt
- 16. Wie übergibt man den Wert von einem Formular an ein anderes Formular beim Absenden?
- 17. Verwenden Sie ein anderes Formular Datentabelle
- 18. Wie führe ich ein Formular auf ein anderes?
- 19. Übergeben einer Methode an ein BackgroundWorker.DoEvent C#
- 20. C#: zeigt die Auswahl von Text in einem Textfeld an, während ein anderes Formular fokussiert ist
- 21. Exklusive Auswahl an ASP.NET-Formular übergeben
- 22. Wie verknüpfe ich ein anderes Formular?
- 23. Parameter an PHP in einem Formular übergeben?
- 24. ein Objekt an ein anderes Objekt initialisieren
- 25. MSAccess 2003 - VBA zum Übergeben eines Werts von einem Formular in ein anderes
- 26. Auslösen von Ereignissen von einem Formular in ein anderes Formular in C#
- 27. Emacs-Puffer an C übergeben
- 28. Wie übergibt man in Wordpress Werte von einem Formular Kontaktformular 7 an ein anderes?
- 29. C++ übergeben Variablentyp an Funktion
- 30. Schließen Sie ein Formular und rufen Sie dann ein anderes
winforms? asp.net? –
winforms-Anwendung – CamlCase
Erstellen Sie eine öffentliche Methode in Ihrer ersten Form, um die Aufgabe für Sie auszuführen. Übergeben Sie form1 an Ihre zweite Form. Wenn Sie den Job ausführen müssen, rufen Sie die Methode von form1 auf. –