Avatar billede Lasse Novice
03. juni 2007 - 21:15 Der er 7 kommentarer og
1 løsning

Custom control

Hej alle sammen

Jeg er loebet ind i et problem der kraever ekspert hjaelp.

Jeg har en kontrol, der har en property kaldet UID - unique id. Denne er af typen System.Guid. Idet jeg opretter kontrollen saa vil jeg gerne saette UID, hvilket kan goeres saaledes i konstrukteren: this.mUID = new Guid();

Problemet er at designeren i VS.Net opretter og nedlaegger kontroller som det passer den, og derved aendres UID tilsvaerende hele tiden. Hvordan kan jeg goere saaledes at det UID jeg har sat en gang forbliver det UID? Jeg har taenkt ligt paa at skrive til en resx fil, men er i tvivl om konsekvensen heraf.

Tak paa forhaand.
Avatar billede lasserasch Juniormester
03. juni 2007 - 22:04 #1
Kan du ikke sætte værdien i runtime?

/Lasse
Avatar billede groop Nybegynder
03. juni 2007 - 23:19 #2
Hmmm kan du ikke sætte det ved new Guid(værdi) - værdi fra Tools->Create Guid? Ellers er det måske muligt, at styre det i controllens Design klasse (arv: DesignerControl). Det er blot et skud.
Avatar billede Lasse Novice
04. juni 2007 - 16:44 #3
Lidt yderligere specificering:

UID er private. Dette medfoerer at brugeren ikke ved til UID. Paa kontrollen findes der to ekstra funktioner: Persist og Load; 1) gemmer looket af kontrollen til en ekstern db, mens 2) loader derfra. Da der er mange instanser af denne kontrol og hver har deres eget look, skal de differensieres vha. et UID.

lasserasch>> Nej, da det skal vaere transparent for brugeren af kontrollen.

groop>>
1) Dette er statisk, og da HVER instans skal vaere unik, saa ville denne ikke virke.
2) Jeg kan ikke se hvad designeren skulle kunne goere til forskel da den lider under samme problem (bliver oprettet adskillige gange). Derudover bliver designeren ikke kaldt hvis der ikke udvikles via WYSIWYG og kontrollen skal ogsaa virke under disse forhold.
Avatar billede aaberg Nybegynder
05. juni 2007 - 10:56 #4
Jeg er ikke helt sikker på at jeg forstår hvad det er du er ude efter, men du kan tjekke om din kontrol er i designmode med propertien Control.DesignMode. Så kan du håndtere din UID specielt, hvis det er designeren der opretter kontrollen.
Avatar billede groop Nybegynder
05. juni 2007 - 16:18 #5
Ud fra det du skriver og som jeg forstår det, så bliver du nødt til, at sætte nogle statiske værdier. Såfremt du "blot" skulle finde en løsning til WYSIWYG kunne du gå ud fra oprettelsesrækkefølgen samt en statisk tæller og alligevel ikke idet du ikke ved, ved hvilken handling kontrollen måske fjernes. Her tænker jeg når Form-designer lukkes og når udvikleren blot fjerner kontrollen fra formen. Dermed ryger referencerne. Lur mig om det ikke er grunden til, at designeren i (visual studio) selv tildeler et navn til en kontrol når den tilføjes til en form. Designeren tager udgangspunkt i navnet på kontrollens variabel (statisk) såfremt et navn ikke er angivet.
Avatar billede Lasse Novice
06. juni 2007 - 21:52 #6
ok, saa der er ikke nogen der kender til en rigtig god loesning...

En anden maade - det daarlige alternativ - er at lade brugeren af kontrollen saette UID idet han opretter den. Ved persist og load bliver der smidt en exception hvis UID ikke er sat.
Avatar billede Lasse Novice
15. marts 2008 - 18:15 #7
Ingen loesning paa dette...?
Avatar billede Lasse Novice
11. august 2010 - 17:01 #8
Lukker spg.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester