[C#] Databinding usercontrol, waarde pas bijgewerkt na tonen

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • urk_forever
  • Registratie: Juni 2001
  • Laatst online: 11-09 18:27
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:

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!


Acties:
  • 0 Henk 'm!

  • Grijze Vos
  • Registratie: December 2002
  • Laatst online: 28-02 22:17
Ik ben niet zo thuis in Winforms, maar kun je niet de validatie functie van de validator aanroepen met de hand o.i.d.?

Op zoek naar een nieuwe collega, .NET webdev, voornamelijk productontwikkeling. DM voor meer info


Acties:
  • 0 Henk 'm!

Verwijderd

Misschien dat je de code voor het valideren in een aparte functie kunt stoppen, en deze aanroept wanneer deze nodig is, zij het in een event of gewoon wanneer je het nodig hebt dmv aanroepen?

Acties:
  • 0 Henk 'm!

  • urk_forever
  • Registratie: Juni 2001
  • Laatst online: 11-09 18:27
Ik heb dezelfde vraag neergelegd bij de leverancier van onze control suite. Zij geven aan dat dit het gedrag is van WinForms databinding. Controls die databound zijn worden niet geupdate als ze onzichtbaar zijn.

Hail to the king baby!