Noen egenskaper er bare gyldig i forhold til andre egenskaper. Under initialisering er det logisk å tillate ugyldige egenskaper. Dette er hvordan du sjekke om din kontroll blir initialisert.
Ta for eksempel en kontroll som har minimum, maksimum og verdi egenskaper (Int32).
Logic fastslår at Minimums ikke må være større enn det maksimale, og at verdien må være innenfor området Minimum..Maximum. Hvis det blir gjort et forsøk på å sette en eiendom til en ulogisk verdi kan det være lurt å heve et unntak.
Problemet er at som en komponent forfatter du har ingen kontroll over hvilken rekkefølge brukeren setter /endrer egenskaper, og kan ende opp med en initialisering delen som ser slik ut:
myControl1.Value = 1000; myControl1.Maximum = 2000; myControl1.Minimum = 500;.
hvis standardverdiene for kontroll er Minimum = 0, Maximum = 10, verdi = 0, så det er ganske åpenbart at den første linjen som setter pengene i 1000 vil føre til en feil
For å bøte på dette problemet, kan du bruke ISupportInitialize grensesnitt. For eksempel .....
offentlig MyControl: Control, ISupportInitialize {boolsk isInitializing = false; Int32 minimum = 0; Int32 verdi = 0; Int32 maks = 10;
ugyldig ISupportInitialize.BeginInit () {isInitializing = true; }
Ugyldig ISupportInitialize.EndInit () {isInitializing = false; }
Offentlig Int32 Minimum {få {return minimum;} sett {if (isInitializing!) {Gjør din validering her} minimum = verdi; }}}
.NET Rammeverket vil sjekke hver komponent for ISupportInitialize før du setter sine egenskaper, og hvis dette støttes skal utføre følgende
component.BeginInit (); ... satt egenskapene til komponent ... component.EndInit ();
Oppdager hvis kontrollen blir created
Previous:Får søknad version