Autor Beitrag
Talemantros
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 444
Erhaltene Danke: 2

Win7 Proff 64bit
C# (VS2013)
BeitragVerfasst: Mo 01.06.15 15:27 
Hey,
ich habe mal eine Blöde Frage zu einer BindingSource

Eigentlich sollte ich es auch wissen :-(

Ich habe ein UserControl mit einer BindingSOurce, die ich über das Eigenschaftfenster an eine Klasse gebunden habe.
Den Steuerelementen habe ich dann auch über das Eigenschaftfenster gesagt, welche Property sie von der BindingSource anzeigen sollen.
Funktioniert auch soweit super. Laden tue ich alles mit:

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
        private void OptionenUserControl_Load(object sender, EventArgs e)
        {
            cmbAblageArt.Items.Add("PDF");
            cmbAblageArt.Items.Add("XPS");

            cmbVorlageArt.Items.Add("EXCEL");
            cmbVorlageArt.Items.Add("WORD");

            localOptions = OptionsBuisness.GetClassOptions();
            bsOptions.DataSource = localOptions;
        }

        private void btnSpeichern_Click(object sender, EventArgs e)
        {
            OptionsBuisness.SetClassOptions(localOptions);
        }

(Vermutlich sollte ich die Items.Add Sachen noch in eine BuisnessLogik legen)

Wenn ich nun an der UserControl etwas ändere werden die Daten mit Speichern auch in der Datenbank sauber abgelegt.
Ich verstehe nur gerade nicht mehr warum localOptions die Änderungen mitbekommt die in dem UserControl gemacht werden und ich diese Speichern kann.
Die Verbindung fehlt mir gerade im Kopf. :-( Und ich verstehe doch immer alles so gern :-)

Warum muss nicht aus der BindingSource erst wieder eine Klasse machen
In anderen Bereichen hatte ich mal
ausblenden C#-Quelltext
1:
Container newContainer = bsContainer.DataSource as Container;					


Ich hoffe ihr verstehst was ich meine und entschuldigt die doofe Nachfrage.

Danke

Gruß
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4700
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Mo 01.06.15 15:51 
Zitat:
Warum muss nicht aus der BindingSource erst wieder eine Klasse machen

Häh?? Es ist eine Klasse(Alles ist Klasse es gibt nichts das nicht Klasse ist) . Du castest die Klasse nur auf einen konkreten Typen damit du eine Typ passende Variable hast (hier newContainer ) um einfach auf die Klasse zugreifen zu können wenn du da selbst vom code aus drauf zugreifen willst. Im ersten Fall hast du aber solch eine Property bereits eben localOptions ob die vor dem zuweisen zur zur BindingSource schon existiert und auf irgendwas zeigt ist doch vollkommen egal. localOptions und bsOptions.DataSource zeigen auf die selbe Instanz. LocalOptions ist nur eine Variable vom (vermutlich) passenden Typen und bsOptions.DataSource eben nur Object da es ja eine generische Klasse ist die mit jedem Inhalt umgehen können sollte. Wenn du die localOptions Variable nirgendwo mehr brauchst kannst du die auch getrost wegwerfen und die Direct der BindungSource zuweisen und da auch wieder rausholen.

ausblenden C#-Quelltext
1:
2:
bsOptions.DataSource = OptionsBuisness.GetClassOptions(); // rein
OptionsBuisness.SetClassOptions(bsOptions.DataSource as KlassenNameDenIchNichtKenne);  //raus