Settings werden sehr häufig suboptimal eingesetzt, vmtl. weil einige Eigenschaften dieses Features nicht hinlänglich bekannt sind.
Also folgende Settings habe ich mal in den Projekteinstellungen angelegt:
Und dieses ist mein Form:
Dann habe ich die Textboxen an die Settings gebunden:
Um an ein Settings zu binden, erweitere man den Knoten "(ApplicationSettings)", und darin klickse man "(PropertyBindings)" - das öffnet den gezeigten Dialog.
Und - besonders schnucklig: Ich habe auch die Groupbox gebunden - ihren Text band ich an "TextboxText", und ihre BackColor an "aColor":
Natürlich band ich auch ColorDialog1.Color an "aColor":
Code schrieb ich nur, um den ColorDialog aufzurufen:
Weil ich dachte, wenn die Color gebunden ist, wird das schon flutschen - ebensoschön, wies ja mitm "TextboxText" flutscht.
Das war ein Irrtum, und ein Blick in den DesignerCode des Forms zeigt auch warum:
Wie man sieht, generiert der Designer für die Textbox ein korrektes Binding, hingegen beim ColorDialog wird nur das Setting ausgelesen - kein Binding wird gesetzt.
Daher übernimmt der ColorDialog beim StartUp zwar die Color, aber es gibt keine weitere Kommunikation mittm Setting, und auch der neue Zustand wird nicht persistiert für den nächsten Startup (bei TextboxText funzt beides like a charm)
Aber das ist auch garnet schlecht, denn einen Dialog will man ja auch canceln können, und da könnte man nicht brauchen, wenn sich die getätigten Einstellungen bereits via Bindings in der ganzen Anwendung verbreitet hätten.
Also beim ColorDialog guten alten Code schreiben, was bei den Textboxen sich erübrigt:
Das wars - den Rest erledigen richtige Bindings
Ergebnis:
Merkpunkte:
Settings.Load(), Settings.Save() ist Crap - da kann man das AnwendungsFramework getrost seinen Job machen lassen.
@Spaceyx' YouTube-Video
Da wird ganz basic-mäßig einfach Textbox.Text gebunden, aber man siehts halt, und auch die Bindings in Aktion, wofür man hier ja den Sample-Code downloaden müsste (uff, uff!) ;).
Man muss aber genau gucken, denn @SpaceyX ist von der schnellen Truppe Das Settings anlegen findet im Video von 00:40 - 01:00 statt, und das Binden von Textbox-Texten daran erfolgt anschließend.
Also folgende Settings habe ich mal in den Projekteinstellungen angelegt:
Und dieses ist mein Form:
Dann habe ich die Textboxen an die Settings gebunden:
Um an ein Settings zu binden, erweitere man den Knoten "(ApplicationSettings)", und darin klickse man "(PropertyBindings)" - das öffnet den gezeigten Dialog.
Und - besonders schnucklig: Ich habe auch die Groupbox gebunden - ihren Text band ich an "TextboxText", und ihre BackColor an "aColor":
Natürlich band ich auch ColorDialog1.Color an "aColor":
Code schrieb ich nur, um den ColorDialog aufzurufen:
Das war ein Irrtum, und ein Blick in den DesignerCode des Forms zeigt auch warum:
VB.NET-Quellcode
- '...
- '
- 'ColorDialog1
- '
- Me.ColorDialog1.Color = Global.SettingsBinding.My.MySettings.Default.aColor
- Me.ColorDialog1.FullOpen = True
- '
- 'TextBox1
- '
- Me.TextBox1.DataBindings.Add(New System.Windows.Forms.Binding("Text", _
- Global.SettingsBinding.My.MySettings.Default, "TextboxText", True, _
- System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged))
- '...
Daher übernimmt der ColorDialog beim StartUp zwar die Color, aber es gibt keine weitere Kommunikation mittm Setting, und auch der neue Zustand wird nicht persistiert für den nächsten Startup (bei TextboxText funzt beides like a charm)
Aber das ist auch garnet schlecht, denn einen Dialog will man ja auch canceln können, und da könnte man nicht brauchen, wenn sich die getätigten Einstellungen bereits via Bindings in der ganzen Anwendung verbreitet hätten.
Also beim ColorDialog guten alten Code schreiben, was bei den Textboxen sich erübrigt:
Ergebnis:
Merkpunkte:
Settings.Load(), Settings.Save() ist Crap - da kann man das AnwendungsFramework getrost seinen Job machen lassen.
@Spaceyx' YouTube-Video
Da wird ganz basic-mäßig einfach Textbox.Text gebunden, aber man siehts halt, und auch die Bindings in Aktion, wofür man hier ja den Sample-Code downloaden müsste (uff, uff!) ;).
Man muss aber genau gucken, denn @SpaceyX ist von der schnellen Truppe Das Settings anlegen findet im Video von 00:40 - 01:00 statt, und das Binden von Textbox-Texten daran erfolgt anschließend.
Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „ErfinderDesRades“ ()