Von Form2 auf Form1 Elemet zugreifen, wie?

  • C#
  • .NET (FX) 4.5–4.8

Es gibt 14 Antworten in diesem Thema. Der letzte Beitrag () ist von ErfinderDesRades.

    Von Form2 auf Form1 Elemet zugreifen, wie?

    Guten Tag liebe Community.
    Ich habe hier ein kleines Problem. Ich will von der Form2 auf ein Element zugreifen (treeView1), was leider nur auf Form1 existiert.
    Ich habe auch verschiedene Möglichkeiten ausprobiert, leider erfolglos.

    Was ich probiert habe:

    C#-Quellcode

    1. ​public treeView1; //In der Form1

    oder

    C#-Quellcode

    1. ​Form1.treeView1 // Leider auf erfolgslos...

    Habt Ihr irgendwelche Ideen wie ich es am besten machen kann?
    MfG.
    Dein Ansatz ist schon ok, du musst nur auf Form1 die "Modifiers" Eigenschaft des Treeview auf z.B. Friend stellen, dann kannst du von Form2 normalerweise zugreifen(form1.label.text = "lol").
    : NV Updater | Nvidia Driver Update Tool

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „TTX.exe“ ()

    TTX.exe schrieb:

    Dein Ansatz ist schon ok, du musst nur auf Form1 die "Modifiers" Eigenschaft des Treeview auf z.B. Friend stellen, dann kannst du von Form2 normalerweise zugreifen(form1.label.text = "lol").

    Daran hatte ich noch gar nicht gedacht, danke!
    Jetzt hab ich noch ein anderes Problem, ich kann ins TreeView1 nichts adden.
    Mein Code:

    C#-Quellcode

    1. private void button1_Click(object sender, EventArgs e)
    2. {
    3. try
    4. {
    5. TreeNode node;
    6. node = frm1.treeView1.Nodes.Add(textBox1.Text);
    7. node.Nodes.Add("Child node");
    8. node.Nodes.Add("Child node 2");
    9. frm1.treeView1.Refresh();
    10. this.Close();
    11. }
    12. catch (Exception)
    13. {
    14. MessageBox.Show("Konnte nicht hinzugefügt werden.");
    15. }

    Ist mein Code ev. falsch?

    MfG.
    ?? node = frm1.treeView1.Nodes.Add(textBox1.Text);

    Müsste da nicht stehen
    node = frm1.treeView1;
    There is no CLOUD - just other people's computers

    Q: Why do JAVA developers wear glasses?
    A: Because they can't C#

    Daily prayer:
    "Dear Lord, grand me the strength not to kill any stupid people today and please grant me the ability to punch them in the face over standard TCP/IP."
    Aber node ist als TreeNode angelegt

    daher sollte der Code meiner Meinung nach so aussehen:

    C#-Quellcode

    1. private void button1_Click(object sender, EventArgs e)
    2. {
    3. try
    4. {
    5. TreeNode node;
    6. node = frm1.treeView1; // der Variablen node den TreeNode zuweisen
    7. node.Nodes.Add(textBox1.Text); //den neuen Node erstellen
    8. node.Nodes.Add("Child node");
    9. node.Nodes.Add("Child node 2");
    10. frm1.treeView1.Refresh();
    11. this.Close();
    12. }
    13. catch (Exception)
    14. {
    15. MessageBox.Show("Konnte nicht hinzugefügt werden.");
    16. }
    There is no CLOUD - just other people's computers

    Q: Why do JAVA developers wear glasses?
    A: Because they can't C#

    Daily prayer:
    "Dear Lord, grand me the strength not to kill any stupid people today and please grant me the ability to punch them in the face over standard TCP/IP."

    JazzerDEV schrieb:

    C#-Quellcode

    1. node = frm1.treeView1.Nodes.Add(textBox1.Text);
    Das machst Du besser über ein Event.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    RodFromGermany schrieb:

    Das machst Du besser über ein Event.


    Das wäre natürlich noch schöner.
    Der Form1 eine Methode mitgeben die Änderungen am TreeView vornimmt.
    There is no CLOUD - just other people's computers

    Q: Why do JAVA developers wear glasses?
    A: Because they can't C#

    Daily prayer:
    "Dear Lord, grand me the strength not to kill any stupid people today and please grant me the ability to punch them in the face over standard TCP/IP."

    Schamash schrieb:

    Aber node ist als TreeNode angelegt

    daher sollte der Code meiner Meinung nach so aussehen:

    C#-Quellcode

    1. private void button1_Click(object sender, EventArgs e)
    2. {
    3. try
    4. {
    5. TreeNode node;
    6. node = frm1.treeView1; // der Variablen node den TreeNode zuweisen
    7. node.Nodes.Add(textBox1.Text); //den neuen Node erstellen
    8. node.Nodes.Add("Child node");
    9. node.Nodes.Add("Child node 2");
    10. frm1.treeView1.Refresh();
    11. this.Close();
    12. }
    13. catch (Exception)
    14. {
    15. MessageBox.Show("Konnte nicht hinzugefügt werden.");
    16. }

    Davor hatte ich auch schon node = frm1.treeView1; versucht, leider bekam ich einen Error:
    "Fehler 1 Eine implizite Konvertierung vom Typ 'System.Windows.Forms.TreeView' in 'System.Windows.Forms.TreeNode' ist nicht möglich."

    Was hatte ich nun falsch gemacht? Oo..
    MfG.
    @JazzerDEV Editier keine Controls auf fremden Forms :!:
    Mach Dir ein Event und gib dem alle nötigen Informationen mit :!:
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    JazzerDEV schrieb:

    Oder wende ich eben meinen Code falsch an?!
    vermutlich daddelst du da iwie herum, sodass mit new ein neues Form erstellt wird, was aber nirgends angezeigt wird. Ja, und in diesem unsichtbaren Form funktioniert dein Code ganz gut - nur hat niemand was davon.

    so allgemein "Event" in die Runde werfen bringt glaub auch nix - imo wäre erstmal zu klären, was das überhaupt werden soll.

    Das eine Form geht zu, das annere auf - sowas ist üblicherweise ein AnmeldeDialog, und das fängt man besser bischen anners an.