Avatar billede mysitesolution Nybegynder
14. august 2005 - 04:09 Der er 8 kommentarer og
1 løsning

Fejl i menu med ikoner

Hej...

denne kode gider ikke virke af en eller anden grund?

jeg har taget den fra microsoft, og kopieret den fra VB til C#

som jeg ser det, bliver OnMeasureItem ikke kaldt...

ms kode:
http://support.microsoft.com/?kbid=888168

public class IconMenuItem:System.Windows.Forms.MenuItem
{
    private Icon icon;
    private Font font;

    public IconMenuItem(string menuText,EventHandler handler,Shortcut shortcut,Icon ico):base(menuText,handler,shortcut)
    {
        this.icon = icon;
        this.font = SystemInformation.MenuFont;
        this.OwnerDraw = true;
    }

    protected override void OnMeasureItem(MeasureItemEventArgs e)
    {
        base.OnMeasureItem(e);
        StringFormat sFormat = new StringFormat();

        sFormat.HotkeyPrefix = HotkeyPrefix.Show;
        sFormat.SetTabStops(50,new Single[] {0});

        if (this.icon.Height > this.font.Height)
            e.ItemHeight = this.icon.Height+6;
        else
            e.ItemHeight = this.font.Height+6;

        e.ItemWidth = (int)e.Graphics.MeasureString(AppendShortcut(),this.font,1000,sFormat).Width+this.icon.Width+5;

        sFormat.Dispose();
        sFormat = null;
    }

    protected override void OnDrawItem(DrawItemEventArgs e)
    {
        Brush br;
        StringFormat sFormat;
       
        base.OnDrawItem(e);

        e.Graphics.FillRectangle(SystemBrushes.Control, e.Bounds);
        if (this.icon != null)
            e.Graphics.DrawIcon(this.icon, e.Bounds.Left + 3, e.Bounds.Top + 3);

        sFormat = new StringFormat();
        sFormat.HotkeyPrefix = HotkeyPrefix.Show;
        sFormat.SetTabStops(50, new Single[] {0});
        br = new SolidBrush(SystemColors.WindowText);
       
        e.Graphics.DrawString(AppendShortcut(), this.font, br, e.Bounds.Left+this.icon.Width+10, e.Bounds.Top+ 2, sFormat);
       
        br.Dispose();
        br = null;
        sFormat.Dispose();
        sFormat = null;
    }

    private string AppendShortcut()
    {
        string s;
        s = this.Text;

        if (this.ShowShortcut && this.Shortcut != Shortcut.None)
        {
            Keys k = (Keys)Shortcut;
           
            //GetType(k) should be GetType(Keys)
            s += Convert.ToChar(9)+TypeDescriptor.GetConverter(k.GetType()).ConvertToString(k);
        }

        return s;
    }
}
Avatar billede mysitesolution Nybegynder
14. august 2005 - 11:51 #1
ingen der har arbejet med menu med ikoner?
Avatar billede mysitesolution Nybegynder
14. august 2005 - 13:21 #2
Ikke vågne endnu :P?
Avatar billede mysitesolution Nybegynder
14. august 2005 - 14:57 #3
raiser til 120 points...
Avatar billede mysitesolution Nybegynder
14. august 2005 - 16:00 #4
200
Avatar billede smsng Nybegynder
14. august 2005 - 22:07 #5
Er det bare en almindelig menu (ligesom File mm.) du vil lave??
Avatar billede anadan Nybegynder
15. august 2005 - 09:32 #6
Hvad mener du med "virker ikke"?
Avatar billede anadan Nybegynder
15. august 2005 - 09:40 #7
Her er source code og dll til en implementation som du kan bruge direkte i vs.net editoren http://www.codeproject.com/cs/menu/MenuExtender.asp . Den bygger videre på denne artikel, hvor der blandt andet gennemgåes OnMeasureItem http://www.codeproject.com/cs/menu/menuimage.asp
Avatar billede mysitesolution Nybegynder
16. august 2005 - 13:32 #8
ja en almindelig menu, menuitem...

Vil ikke have en anden kode, vil have MS', den må jo virke hhm...

Lige meget, installeret 2005....:/
Avatar billede anadan Nybegynder
16. august 2005 - 13:37 #9
Anden kode? Det er jo bare en der har lavet arbejdet for dig..
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