Auf Form zugreifen
-
Hallo,
ich habe 2 Forms erstellt. Um auf die 2.Form zugreifen zu können , erstelle ich eine Instanz davon.
Auf dieser 2.Form befindet sich auch ein Button und ein Textfeld. Aber ich kann darauf nicht zugreifen. Hier mein Codenamespace WindowsFormsApplication2 { public partial class Form1 : Form { Form2 nocheineForm = new Form2(); public Form1() { InitializeComponent(); this.button1 // geht // aber nocheineForm.button_von_Form2 // geht nicht } }
-
Hab ein Buch für dich gefunden
The Complete Idiot's Guide to C# Programming
The Complete Idiot's Guide to C# Programming | ISBN: 002864378X
-
Buch hab ich selber. Hab aber nix drin gefunden
-
Der Beitrag von LOLAlter trifft es auf den Punkt.
Du solltest Dich wirklich mit den Grundlagen beschäftigen.Der Grund warum die Elemente von Form2 nicht "Sichtbar" sind, ist ziemlich einfach, sie sind private, d.h. man kann nicht von außen auf die Elemente zugreifen.
Du könntest jetzt aus...
private System.Windows.Forms.TextBox textBox1;
das hier machen...
public System.Windows.Forms.TextBox textBox1;
wäre aber ein schlechter Programmierstil.
So Global wie nötig und so Lokal wie möglich, hat uns unsere Dozent regelrecht eingeprügelt.
Stichpunkt: Datenkapselung
Hier ein kurzes Beispiel:
Form1.cs = 2 x Button:
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace WindowsFormsApplication1 { public partial class Form1 : Form { private Form2 _newForm; public Form1() { InitializeComponent(); _newForm = new Form2(); } private void button1_Click(object sender, EventArgs e) { _newForm.Show();//Form2 als nicht modales Dialogfeld anzeigen: } private void button2_Click(object sender, EventArgs e) { _newForm.Uebergabe("Hallo","Form1");//Strings an Form2 übergeben: } } }
Form2.cs = 1 x TextBox und 1 x Button:
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace WindowsFormsApplication1 { public partial class Form2 : Form { internal void Uebergabe(String _textBox, String _Button) { textBox1.Text = _textBox;//String an TextBox übergeben: button1.Text = _Button;//String an Button übergeben: } public Form2() { InitializeComponent(); } } }
-
@Doug_HH: Mach dir doch nicht so ein Aufwand, blurry ist Beratungsresistent und das seit er sich angemeldet hat. Er wird sich nie an das halten was wir ihm mal gesagt haben und deshalb bringt es nichts ihm hier Loesungen zu praesentieren die er eh nicht versteht.
-
Okay
-
Die Lösung die Controls auf Form2 public zu machen funktioniert. Also wieso soll ichs anders machen. Ich seh gerade kein Beispiel wo mir das um die Ohren fliegen würde. Und eine andere Lösung kenn ich nicht.
bzw. es gibt wohl eine Lösung und zwar mit delegates.
Aber da kenn ich mich grad net so aus.
-
Die Lösung habe ich Dir doch gepostet...
Datenkapselung, bitte mal lesen...http://www.u-helmich.de/inf/BlueJ/lexikon/Datenkapselung.html
-
blurry333 schrieb:
Buch hab ich selber. Hab aber nix drin gefunden
Ja, klar. Kein Buch der Welt hat ein Kapitel "Zugriff auf Button einer anderen Form".
Du bist einfach nicht in der Lage das Grundlagenwissen auf richtige Problemstellungen zu transferieren. Gib's endlich auf.
-
lolalter schrieb:
Grundlagenwissen auf richtige Problemstellungen zu transferieren. Gib's endlich auf.
Ich finde, auch Hartnäckigkeit sollte irgendwann belohnt werden.