Avatar billede trumf Nybegynder
30. august 2006 - 21:38 Der er 9 kommentarer og
2 løsninger

bruge en const til at sætte baggrundsfarve på en control

Hejsa E

Jeg sidder og bøvler med at få lagt nogle farver på en kontrol.

jeg har denne kalender som jeg gerne vil style efter resten af sidens design og jeg vil også gerne kunne ændre farverne igen on the fly. Derfor har jeg lagt de farver jeg bruger ind som konstanter, så jeg så bruger hvor de skal bruges.
Nu prøver jeg at lægge dem på en kontrol med jeg får nogle fejl.

i codebehind har jeg en public farve
Constants cnt = new Constants();
    public Color outerBgColor
    {
        get { return Color.FromName(cnt.outerBgColor); }
    }

og på siden har jeg lagt den ind med

<asp:Calendar ID="calendar" OnDayRender="dayRender" OnSelectionChanged="dateChange" SelectionMode="Day" CssClass="broed" runat="server">
<DayHeaderStyle BackColor="<%outerBgColor %>" />
</asp:Calendar>

men jeg får fejlen:
Cannot create an object of type 'System.Drawing.Color' from its string representation '<%outerBgColor %>' for the 'BackColor' property.   

Hvad skal jeg lige gøre her ?
Avatar billede bulgroz Nybegynder
31. august 2006 - 07:15 #1
hvad er din const cnt.outerBgColor ?
Avatar billede trumf Nybegynder
31. august 2006 - 08:21 #2
en string "ffffff"

Måske jeg lige skal tilføje at jeg også har prøvet i codebehind
this.calendar.DayHeaderStyle = Color.FromName(cnt.outerBgColor);
Men så får jeg en fejl om at den ikke kan konvertere en color til en style. Jeg ved ikke hvordan det skal gøres, eller ville det vel være den optimale løsning !?
Avatar billede bulgroz Nybegynder
01. september 2006 - 09:22 #3
Bemærk at Color.FromName accepterer kendte navne så som "SlateBlue" og ikke "fffff".
Men hvis du ønsker RGB 0,0,0 er det fint nok, for det er hvad du får ved ukendte navne.

Fra MSDN
"A predefined color is also called a known color and is represented by an element of the KnownColor enumeration. If the name parameter is not the valid name of a predefined color, the FromName method creates a Color structure that has an ARGB value of 0 (that is, all ARGB components are 0).
"

Hvis du derimod vil definere dine egne farver kan du med fordel definere dem ved hjælp af Color.FromArgb() og så pakke den pænt ind i din Constants classe.

public Color MyColor
{
    get
    {
        return Color.FromArgb(253, 106, 90, 205);
    }
}

Anvend eventuelt SystemColors for at anvende de temaafhængige farver så som SystemColors.ActiveCaptionText.
Avatar billede trumf Nybegynder
01. september 2006 - 10:50 #4
Det virker faktisk fint nok med Color.FromName(cnt.outerBgColor); hvor der skal sættes en color ind, men når den vil have en style brokker den sig.

this.calendar.DayHeaderStyle = Color.FromName(cnt.outerBgColor); //giver fejl
this.calendar.BackColor = Color.FromName(cnt.outerBgColor); //virker fint

Problemet er at sætte farven på dayheader backcolor med en constant.

Jeg kan vel løse det ved at lave en backcolor style og sætte constanten ind i den og så sætte DayHeaderStyle til den style.... men hvordan laver jeg den style ?
Avatar billede trumf Nybegynder
01. september 2006 - 10:52 #5
Noget i stil med

Style s = new Style();
s.BackColor = Color.FromName(cnt.outerBgColor);
this.calendar.DayHeaderStyle = s;
Avatar billede bulgroz Nybegynder
01. september 2006 - 12:01 #6
Nu roder jeg ikke normalt med asp (så prøv evnt. den kategori), men umiddelbart er Color og Style to forskellige structs.
Avatar billede bulgroz Nybegynder
01. september 2006 - 12:13 #7
Rettelse:

DayHeaderStyle er af typen System.Web.UI.WebControls.TableItemStyle
Og kan med andre ord ikke blot tilskrives en Color.
Avatar billede trumf Nybegynder
02. september 2006 - 10:38 #8
Lægger du et svar, så deler vi i porten. Jeg flytter den til et andet forum med en bedre beskrivelse af problemet.
Avatar billede trumf Nybegynder
02. september 2006 - 10:50 #9
Avatar billede bulgroz Nybegynder
03. september 2006 - 15:05 #10
svar
Avatar billede trumf Nybegynder
03. september 2006 - 15:20 #11
...
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