Ik heb een UserControl in C# (WinForms) welke met databinding een waarde van een object ophaalt. In de constructor van het control stel ik de databinding als volgt in:
Ik maak meerdere van deze controls dynamisch aan en voeg ik toe aan een form. Dit werkt goed en de waardes uit het MyObject object worden getoond in het UserControl. Daarnaast heb ik een validatie control welke de waardes valideert in de controls op het form. Dit gaat goed zolang de gebruiker zelf de waardes in voert.
Als de MyObject.Waarde property een waarde bevat tijdens het databinden dan wordt deze niet door de validatie gezien. Pas als ik het control de focus geef en naar een ander control ga wordt de validatie nogmaals uitgevoerd en is de waarde wel goed. Of als ik na het toevoegen van het control met een timer nogmaals het validatiecontrol laat valideren wordt de waarde als correct gezien.
Na wat zoeken blijkt ook dat de UCMyComboBox.EditValue property NIET de waarde van het MyObject.Waarde property heeft, dit gebeurt pas als het control getoond wordt. Ook het DataBindings["EditValue"].ReadValue(); aanroepen helpt hier niet bij.
Kan ik dit oplossen?
C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
| public partial class UCMyCombobox : ComboBox { private MyObject_MyObject; public UCMyCombobox(MyObject MyObject) { InitializeComponent(); DataBindings.Add(new Binding("EditValue", _MyObject, "Waarde")); DataBindings["EditValue"].ReadValue(); } public MyObject MyObject { get { return _MyObject; } } } |
Ik maak meerdere van deze controls dynamisch aan en voeg ik toe aan een form. Dit werkt goed en de waardes uit het MyObject object worden getoond in het UserControl. Daarnaast heb ik een validatie control welke de waardes valideert in de controls op het form. Dit gaat goed zolang de gebruiker zelf de waardes in voert.
Als de MyObject.Waarde property een waarde bevat tijdens het databinden dan wordt deze niet door de validatie gezien. Pas als ik het control de focus geef en naar een ander control ga wordt de validatie nogmaals uitgevoerd en is de waarde wel goed. Of als ik na het toevoegen van het control met een timer nogmaals het validatiecontrol laat valideren wordt de waarde als correct gezien.
Na wat zoeken blijkt ook dat de UCMyComboBox.EditValue property NIET de waarde van het MyObject.Waarde property heeft, dit gebeurt pas als het control getoond wordt. Ook het DataBindings["EditValue"].ReadValue(); aanroepen helpt hier niet bij.
Kan ik dit oplossen?
Hail to the king baby!