Avatar billede dex_dexter Nybegynder
15. september 2006 - 10:08 Der er 7 kommentarer

Custom combobox, .items mangler?

Jeg har lavet en custom combobox, men når jeg bruger den i et projekt mangler jeg ting såsom .items, dvs jeg ikke kan adde ting til min combobox, hvad har jeg glemt?

lige nu er comboboxen bare en almindelig box jeg har hevet ind og gemt som custom user control
Avatar billede segato Nybegynder
15. september 2006 - 10:15 #1
Hvis du laver en custom combobox skal du ikke bare smide den ind på en user control. Lav en klasse og nedarv den fra ComboBox. Så kan du override funktioner så som OnPaint osv osv. Saådan laver man en custom ComboBox.
Avatar billede dex_dexter Nybegynder
26. september 2006 - 12:27 #2
hm.. du har nok ret.

jeg har lavet noget kode lige nu kører i en almindelig combobox i drawitem metoden og denne vil jeg nu have lavet til en usercontrol.

i mine forsøg har jeg prøvet at gøre som du foreskriver, men får bare at vide at der ingen usercontrols er i min klasse, men jeg har jo også blot en klasse der nedarver fra combobox, ikke en usercontrolklasse.

har du et tip?
Avatar billede dex_dexter Nybegynder
26. september 2006 - 12:29 #3
hovsa, custom control må det vel hedde istedet for usercontrol.
Avatar billede segato Nybegynder
26. september 2006 - 15:44 #4
Nu giver eksemplet ingen mening alene har bare vist dig opbygning. Prøv at tilføje den her combo så vil du se en rød firkant. Her kommer du så ind i billedet og laver dte rigtigt lækkert i stedet for bare en firkant :D


    class MagicCombo : System.Windows.Forms.ComboBox
    {
        public MagicCombo()
        {
            this.DoubleBuffered = true; //Fjerner flicker
            this.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawVariable;
            this.Items.Add("pll");
            this.Items.Add("pll");

        }

        protected override void OnPaint(System.Windows.Forms.PaintEventArgs e)
        {
            base.OnPaint(e);
        }

        protected override void OnDrawItem(System.Windows.Forms.DrawItemEventArgs e)
        {
            System.Drawing.Graphics g = e.Graphics;
            System.Drawing.Brush brush = new System.Drawing.SolidBrush(System.Drawing.Color.Red);
            System.Drawing.Pen pen = new System.Drawing.Pen(brush);
            g.DrawRectangle(pen, new System.Drawing.Rectangle(1, 1, 50, 50));           

            base.OnDrawItem(e);
        }
    }
Avatar billede segato Nybegynder
26. september 2006 - 15:45 #5
Men hvor kommer usercontrol ind i billedet? Når man laver en custom combo skal den jo ikke være afhængig af en UserControl. Den skal bare kunne hostes på en.
Avatar billede dex_dexter Nybegynder
26. september 2006 - 16:18 #6
hm.. jeg er lidt i vildrede i hvor jeg skal indsætte den stump kode.

jeg tror hele problemet er at jeg starter forkert ud.
skal jeg bruge en usercontrol? jeg vil gerne have den liggende i en dll fil og mulighed for at hente den ind fra toolboxen.
Avatar billede segato Nybegynder
27. september 2006 - 08:25 #7
Jeg tror jeg er ved at miste overblikket over hvad du vil nu :D Som jeg forstod det ville du lave en custom combobox. Men det ser ud som du har en usercontrol du gerne vil have i et seperat dll. Så laver du bare et class library hvor i du har din usercontrol eller combobox eller hvad du nu har lyst til. Du kan så på din toolbox højre klikke og vælge choose items. Her browser du til dit dll, og så skulle kontrollerne gerne blive vist. Hvis du propper en compobox ind på en usercontrol vil din usercontrol selvfølgelig ikke vise Combo'ens properties, så som items. Så skal du gøre som jeg har vist dig oven over.
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

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