Avatar billede finger Nybegynder
04. april 2003 - 12:20 Der er 7 kommentarer og
1 løsning

Visual studio .NET: abstract

Hey.

Jeg udvikler nogle win forms for øjeblikket.
I mine forms vil jeg have en menu samt en statusbar på dem alle + nogle metoder der skal ligge i alle forms.
Jeg ville gerne lave nogle interface metoder som skal implementeres i alle forms og nogle reelle metoder med indhold.
Til dette ville jeg lave en abstract form som alle andre forms skulle arve fra.
programmeringsmæssigt fungerer det også fint og alle er glade.
Men Visual Studio .NET kan ikke finde ud af abstract. Den fejler når den skal vise designview af de forms der arver fra den abstracte form. Den siger af designeren skal lave en instans af den abstracte form for at kunne vise noget, men at den ikke kan det netop fordi den er abstract.

Hvad helvede gør man så når man nu gerne vil lave den abstract?

Er der nogen der har løbet ind i dette andre steder og har løst det?
Avatar billede dj Nybegynder
04. april 2003 - 14:55 #1
Så dropper man alt om at bruge den indbyggede GUI editoer og overgår til håndskrivning :)
(eller overgår til XML-modelleringssproget GUIML, når det er færdigudviklet ;)

spøg til side, jeg kunne godt forestille mig Visual Studio kan have svært ved at håndtere abstracte forms og håndkodning måske er den eneste løsning i den situation, hvis du absolut vil nedarve fra en abstract form.

Alternativt kunne du jo lave en udvidet panelkomponent der indeholder din menubar og de andre ting, som du så bare kan referere/inkludere i dine forskellige forms (så undgår du abstractionsproblematikken).

Er lidt samme princip som når du skal vælge struktur på en hjemmeside, typisk gør man enten det at man laver en default fil som moddellerer skelettet og som man så inkluderer undersider i (svarer til din abstracte form løsning) eller også laver man en header og en footer som man istedet inkluderer i alle undersiderne (svarer til den alternative løsning jeg nævnte til sidst).
Avatar billede finger Nybegynder
08. april 2003 - 09:02 #2
JA det har jeg også gjort indtil videre.... sådan næsten da.
Jeg har en User Control med min statusbar i som bliver inkluderet på alle sider. Det virker også fint og igen er alle glade..... liiiiige indtil at visual studio får den ide fuldstændigt uden opfordring at smide user controlen ud. ja det lyder åndsvagt og der gik mange gange inden jeg opdagede at det er visual studio der selv gør det. nogle dage virker det fint og andre dage smider visual studio bare min user control væk fra vilkårlige forms på vilkårlige tidspunkter..... meget mærkeligt! og ret frustrerende.
Det skal lige siges at det ikke kun er på min installation det sker, det sker lige så tit på mine kollegaers installation.
Men det er måske på grund af at det er en user control? hvis det var et panel ville det måske virke bedre?
Avatar billede dj Nybegynder
08. april 2003 - 12:50 #3
Jeg skal ikke kunne sige hvad det er der gør Visual Studio opfører sig på den måde. Men jeg må indrømme jeg er begyndt at gå længere og længere væk fra Visual Studio pga. mange ting faktisk er mere besværlige at gennemføre i det, selv GUI design kan faktisk laves nemmere i hånden (og med hjælp fra et par simple parserprogrammer man ret hurtigt kan bikse sammen) og så slipper man for den slags problemer, samt man kommer ud over RAD miljøernes foretrukne udviklingsform (Som ikke er specielt hensigtsmæssig til størrer projekter).

Hvis jeg må give dig et råd, så drop Visual Studio til det projekt du har gang i der, for jeg tvivler på miljøet vil være dig til nogen hjælp når du bevæger dig udover miljøets vante rammer.
Avatar billede burningice Nybegynder
08. april 2003 - 13:58 #4
dj>> hvorfor droppe VS.Net?! Dens intellisense kan ikke fås meget bedre, så hvis der er noget man skulle droppe, så var det dens formdesigner. Jeg bruger den generelt heller ikke, men selve code-editoren.. jeg har svært ved at leve uden ;)
Avatar billede dj Nybegynder
08. april 2003 - 16:35 #5
intellisense er et spørgsmål om tilvænning, man kan fint lære at leve uden ;)

Men ja, men kan da også fint bare nøjes med at benytte code-editoren i VS.NET, men så er det ligesom om at meget af ideen i at benytte et stort og dyrt udviklingsmiljø forsvinder .. hvis man da ikke er dybt afhængig af intellisense =)
Avatar billede burningice Nybegynder
08. april 2003 - 17:05 #6
dj>> tja... jeg ved nu ikke om hele ideen forsvinder. Det er rigtigt at du selvfølgelig ikke bare kan trække dine kontroller ind på formen og bruge Properties-browseren på dem hvis du kun bruger code-editoren... men du har stadigvæk mulighed for state-of-the-art debugging... og jo, selvfølgelig kan man lave uden intellisense. Men det sparer dig for en masse tid, istedet for hele tiden at skulle slå op i SDK'et for at se hvad det nu var det hed, og hvilke parametre man nu skulle bruge.
Avatar billede z42cool Nybegynder
09. april 2003 - 11:25 #7
Grunden er at når din form er i design mode vil VS.Net forsøge at instantiere en eventuel parent klasse frem for klassen selv, dette kan naturligvis ikke lade sig gøre. Læs den glimrende forklaring og grimme men effektive løsning her: http://groups.google.com/groups?hl=da&lr=&ie=UTF-8&oe=UTF-8&threadm=%23FX6RnUyBHA.2228%40tkmsftngp07&rnum=1&prev=/groups%3Fq%3DVisual%2BInheritance%2BWoes%26hl%3Dda%26lr%3D%26ie%3DUTF-8%26oe%3DUTF-8%26selm%3D%2523FX6RnUyBHA.2228%2540tkmsftngp07%26rnum%3D1
Avatar billede finger Nybegynder
09. april 2003 - 14:35 #8
argh hvor besværligt. Håber det er fikset i VS.NET 2003!

takker.
/me kaster point i din retning.

//finger
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