C# Befehl von Form zu Form

...komplette Frage anzeigen

4 Antworten

Gut, halt mal ein schnelles Beispiel (bspw. ohne Prüfung, ob aus dem richtigen Thread auf die Controls zugegriffen werden), nur um EINE Lösung zu verdeutlichen:

Form1 hat eine leere Listbox (listBox1) und einen Button (button1):

 public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            Form2 _f2 = new Form2(this.listBox1);
            _f2.Show();
        }
    }

Form2, in der auf die Listbox (ohne Prüfung etc) zugegriffen wird, indem die Listbox bzw. besser Referenz dem Konstruktor der Form2 übergeben wird:

public partial class Form2 : Form
    {
        private ListBox _lb = null;

        public Form2()
        {
            InitializeComponent();
        }

        public Form2(ListBox form1Listbox)
            : this()
        {
            this._lb = form1Listbox;
        }

        private void button1_Click(object sender, EventArgs e)
        {
            if (!String.IsNullOrEmpty(this.textBox1.Text))
            {
                this._lb.Items.Add(this.textBox1.Text);
            }
        }
    }

Gibt weitaus mehr Möglichkeiten, wie man das von Dir geschilderte Problem lösen könnte, ist halt eine.

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von DataJockey
13.10.2011, 11:28

Das ist eine sehr aufwendige Lösung.

Wie von mir beschrieben die Sichtbarkeit auf public zu setzen ist zwar kein guter OOP-Stil, aber wesentlich einfacher. Wenn mans OOP machen will, kann man ja ne read-only Property drauf zeigen lassen. Aber wen interessiert's ....

gruss, dj

0
Kommentar von Cedmeister
13.10.2011, 22:25

Danke für die ausführliche Antwort!

Aber es kommt der Fehler:

Fehler 1 "Projekt.Form2" enthält keinen Konstruktor, der 1-Argumente akzeptiert.

Zur Aufklärung: Soll ein Geburtstagsplaner werden wo man selber Einträge erstellen, ändern und löschen kann.

0

Mit Binding (bspw. http://msdn.microsoft.com/de-de/library/ms229614.aspx) oder Listener oder nur Übergabe des selektierten Wertes... Wobei ich letzten Satz tatsächlich nicht verstehen "Befehle für die Lisgbox auf der 1. aufrufen"? Was willst Du dann noch aufrufen?

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von Cedmeister
12.10.2011, 18:53

Einfach die Einträge der Listbox auf Form1 durch den String von Textboxen auf Form 2 ändern ^^

0

Eigenschaften der Listbox:

GenerateMember : True (sorgt dafür dass eine Variable für die Listbox angelegt wird)

Modifiers : Public (versieht die Variable mit Sichtbarkeit Public)

Gruss, dj

Antwort bewerten Vielen Dank für Deine Bewertung

das gleiche programmier ich auch

Antwort bewerten Vielen Dank für Deine Bewertung

Was möchtest Du wissen?