Laden...

Datebindung bei Steuerelementen

Erstellt von macke_a vor 15 Jahren Letzter Beitrag vor 15 Jahren 1.004 Views
M
macke_a Themenstarter:in
291 Beiträge seit 2007
vor 15 Jahren
Datebindung bei Steuerelementen

Hallo !
Ich suche Informationen wie ich Steuerelemente mittels Datenbindung untereinander verknüpfen kann. Gibt es irgendwo im Möglichkeiten sich dieses Wissen anzulesen?

Ich programmiere zur Zeit eine Oberfläche und vermute das mir das Databinding so manche Software-Arbeit ersparen kann. Wie funktioniert das Prinzip und was für Möglichkeiten habe ich...

Fragen über Fragen, jetzt suche ich die passenden Antworten!
Kann mir jemand weiterhelfen?

Gruss macke_a

Gelöschter Account
vor 15 Jahren

da empfehle ich dir erstmal ales über "DataBinding" hier :rtfm: 🛈 📗 nachzulesen und bei konkreten problemen nochmals zu posten.

M
macke_a Themenstarter:in
291 Beiträge seit 2007
vor 15 Jahren

Hallo ! Danke für die Hinweise und natürlich habe ich gleich auch eine Frage.

Bei meiner Oberfläche nutze ich einen Ziffernblock (12 Tasten) die ich je nach Tastendruck mit einer roten Farbe kenntlich machen will. Jetzt betätige ich die Taste 1, d.h. diese Taste wird rot und soll den farblichen Zustand halten bis die nächste Taste gedrückt wird; alle anderen bleiben neutral.

Wird jetzt Taste 4 betätigt, so müssen alle anderen Tasten wieder neutral werden und die gedrückte hat wiederum die rote Farbe, usw.

Kann man so etwas mittels Databinding lösen ? Oder wird das zu komplex mit der Programmierung? Gibt es eine alternative Lösung ?

Gruss macke_a

1.665 Beiträge seit 2006
vor 15 Jahren

Für mich kommt an so einem Vorhaben DataBinding überhaupt nicht zum Thema. Das ist doch reine GUI-Logik die du da haben willst. Es wird auch der einfachste Weg sein, dass selber zu programmieren... Das sind vllt. 10 Zeilen Code.

36 Beiträge seit 2008
vor 15 Jahren

ja, also du scheinst da den Sinn von DataBinding missverstanden zu haben...

damit kann man zum Beispiel ein DataGridView sehr unkompliziert mit einer passenden Liste befüllen, indem man diese als BindingSource angibt...

Du solltest da wohl mit den Click-Events der einzelnen Buttons arbeiten. Wenn du einen Button klickst, soll dieser einfach rot werden und alle anderen bekommen wieder die Standard-Farbe...

Nicht so kompliziert denken 😉

"Ab heute senden wir unseren Newsletter nicht mehr an [meine eigentliche E-Mail-Adresse], sondern an weg:::

*lach*

Gelöschter Account
vor 15 Jahren

ja da ist databindung fehl am platz.

36 Beiträge seit 2008
vor 15 Jahren

zum Beispiel so 🙂

        private void button1_Click(object sender, EventArgs e)
        {
            button1.ForeColor = Color.Red;
            foreach (Control crl in this.Controls)
                if (crl is Button && crl.Name != ((Button)sender).Name)
                    ((Button)crl).ForeColor = Color.Black;
        }

        private void button2_Click(object sender, EventArgs e)
        {
            button2.ForeColor = Color.Red;
            foreach (Control crl in this.Controls)
                if (crl is Button && crl.Name != ((Button)sender).Name)
                    ((Button)crl).ForeColor = Color.Black;

        }

        private void button3_Click(object sender, EventArgs e)
        {
            button3.ForeColor = Color.Red;
            foreach (Control crl in this.Controls)
                if (crl is Button && crl.Name != ((Button)sender).Name)
                    ((Button)crl).ForeColor = Color.Black;
        }

"Ab heute senden wir unseren Newsletter nicht mehr an [meine eigentliche E-Mail-Adresse], sondern an weg:::

*lach*

Gelöschter Account
vor 15 Jahren

erhm.. wohl eher so:


    private void button_Click(object sender, EventArgs e)
    {
        Button temp = sender as Button;
        if(temp != null)
        {
            foreach (Control c in this.Controls)
            {
                if (c is Button && c != temp)
                {
                    c.ForeColor = Color.Black;
                }                
            }
            temp.ForeColor = Color.Red;
        }
    }

und nur noch alle button-clickevents auf diese methode registrieren. so vermeidest du sich wiederholende codeabschnitte.

wenn du außer den einzufärbenden buttons noch andere buttons hast, dann musst du die logik entsprechend anpassen.

edit: quelltextformatierung...

36 Beiträge seit 2008
vor 15 Jahren

jop, optimieren kann man ja immer, fiel direkt nach dem posten auch auf, dass ein event ja völlig reicht, aber war zu faul es zu ändern^^

"Ab heute senden wir unseren Newsletter nicht mehr an [meine eigentliche E-Mail-Adresse], sondern an weg:::

*lach*

M
macke_a Themenstarter:in
291 Beiträge seit 2007
vor 15 Jahren

Hallo !
Ich habe ein Problem bei der Auswertung des folgenden Quelltextes...

private void button_Click(object sender, EventArgs e)
    {
        Button temp = sender as Button;
        if(temp != null)
        {
            foreach (Control c in this.Controls)
            {
                if (c is Button && c != temp)
                {
                    c.ForeColor = Color.Black;
                }
            }
            temp.ForeColor = Color.Red;
        }
    }

Den Ziffernblock ist mit der button clickevent methode verbunden.

Allerdings bekomme ich für temp immer eine Null als Rückgabewert zurück!
Ich habe es mit meinem Debugger mehrfach kontrolliert und es ist nicht möglich, einen anderem Rückgabewert zu bekommen.
Wie kann das denn sein? Jemand nen Vorschlag, woran diese liegen könnte?

Gruss macke_a

Gelöschter Account
vor 15 Jahren

von einem ziffernblock war nie die rede...

ich schätze mal das der ziffernblock marke eigenbau ist? dann kann er nie ein button sein... und somit ist dan temp immer null...

M
macke_a Themenstarter:in
291 Beiträge seit 2007
vor 15 Jahren

Der Ziffernblock besteht aus einzelnen Buttons! Die Buttons werden alle über das button clickevent Methode miteinander verbunden.

Somit mußte ich einen Rückgabewert bekommen!

Gruss macke_a