Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : ToolStripMenuItem qui m'énerve.. [ Windows / Formulaire / Winforms / Controls ] (Lutinore)

vendredi 28 juillet 2006 à 17:08:23 | ToolStripMenuItem qui m'énerve..

Lutinore

Administrateur CodeS-SourceS

 

Salut pour faire joli j'utilise un MenuStrip mais la propriété ImageKey ne marche pas sur les ToolStripMenuItems imbriqués. Je fais une erreur où c'est normal !?

private void InitializeForm( )
{
    this.SuspendLayout( );

    // ImageList

    imageList = new ImageList( );
    imageList.ImageSize = new Size( 32, 32 );
    imageList.ColorDepth = ColorDepth.Depth24Bit;
    imageList.TransparentColor = Color.Magenta;
    imageList.Images.Add( "Network", new Bitmap( "Network.bmp" ) );
    imageList.Images.Add( "Scan", new Bitmap( "Scan.bmp" ) );

    // ToolStripMenuItem

    ToolStripMenuItem scanItem = new ToolStripMenuItem( );
    scanItem.Text = "&Scan Network";
    scanItem.ImageKey = "Scan"; // <-- L'image ne s'affiche pas :(
    //scanItem.Image = imageList.Images[ "Scan" ]; // <-- L'image s'affiche.
    scanItem.ShortcutKeys = Keys.Control | Keys.F5;
    scanItem.Click += delegate { MessageBox.Show( "Scanning.. "); };

    ToolStripMenuItem exitItem = new ToolStripMenuItem( );
    exitItem.Text = "E&xit";
    exitItem.ShortcutKeys = Keys.Alt | Keys.F4;
    exitItem.Click += delegate { this.Close( ); };

    ToolStripMenuItem networkItem = new ToolStripMenuItem( );
    networkItem.Text = "&Network";
    networkItem.ImageKey = "Network"; // <-- L'image s'affiche.
    networkItem.DropDownItems.AddRange
    (
        new ToolStripItem[ ]
        {
            scanItem,
            new ToolStripSeparator( ),
            exitItem
        }
    );

    // MenuStrip
   
    MenuStrip menuStrip = new MenuStrip( );
    menuStrip.ImageList = imageList;
    menuStrip.Items.Add( networkItem );

    // MainForm

    this.MainMenuStrip = menuStrip;
    this.Controls.Add( menuStrip );

    this.ResumeLayout( );
}


vendredi 28 juillet 2006 à 19:35:51 | Re : ToolStripMenuItem qui m'énerve..

Bidou

Administrateur CodeS-SourceS
Salut,
Tiens bizarre, j'ai essayé ça ne marche pas non plus chez moi.
Et ImageIndex ne semble pas fonctionner non plus d'ailleurs.

T'as rien trouvé dans MSDN à ce sujet ?



VC# forever

vendredi 28 juillet 2006 à 20:46:12 | Re : ToolStripMenuItem qui m'énerve..

Lutinore

Administrateur CodeS-SourceS
Je suis sur un piste, en rajoutant scanItem.Owner.ImageList = imageList ça passe mais j'ai pas encore bien compris qui c'est cet 'Owner'

vendredi 28 juillet 2006 à 21:35:26 | Re : ToolStripMenuItem qui m'énerve..

atmeitsatme

Salut, moi je ne mais que la propriété Image = monImage, et ca suffit pour l'afficher.

vendredi 28 juillet 2006 à 23:32:33 | Re : ToolStripMenuItem qui m'énerve..

Lutinore

Administrateur CodeS-SourceS

atmeitsatme , oui bien sûr c'est ce que j'ai fais plus haut mais j'ai commenté la ligne car ce que je veux c'est utiliser mon ImageList.

...

En fait le 'Owner' est de type ToolStripDropDownMenu apparemment si j'ai bien compris il est généré implicitement par la méthode CreateDefaultDropDown au moment de l'insertion des items dans la propriété DropDownItems. Si on le créer explicitement ont peut lui assigner l'ImageList et ça marche. Ca fait quand même pas mal de code et en mémoire ça doit être assez lourd tous ces ToolStripMachin..

private void InitializeForm( )
{
    this.SuspendLayout( );

    // ImageList

    imageList = new ImageList( );
    imageList.ImageSize = new Size( 32, 32 );
    imageList.ColorDepth = ColorDepth.Depth24Bit;
    imageList.TransparentColor = Color.Magenta;
    imageList.Images.Add( "Scan", new Bitmap( "Scan.bmp" ) );

    ToolStripMenuItem scanItem = new ToolStripMenuItem( );
    scanItem.Text = "&Scan Network";
    scanItem.ImageKey = "Scan";
    scanItem.ShortcutKeys = Keys.Control | Keys.F5;
    scanItem.Click += delegate { MessageBox.Show( "Scanning.. "); };

    ToolStripMenuItem exitItem = new ToolStripMenuItem( );
    exitItem.Text = "E&xit";
    exitItem.ShortcutKeys = Keys.Alt | Keys.F4;
    exitItem.Click += delegate { this.Close( ); };

    ToolStripDropDownMenu dropDown = new ToolStripDropDownMenu( );
    dropDown.ImageList = imageList;
    dropDown.Items.AddRange
    (
        new ToolStripItem[ ]
        {
            scanItem,
            new ToolStripSeparator( ),
            exitItem
        }
    );

    ToolStripMenuItem networkItem = new ToolStripMenuItem( );
    networkItem.Text = "&Network";
    networkItem.DropDown = dropDown;
    
    MenuStrip menuStrip = new MenuStrip( );
    menuStrip.ImageList = imageList;
    menuStrip.Items.Add( networkItem );

    this.MainMenuStrip = menuStrip;
    this.Controls.Add( menuStrip );

    this.ResumeLayout( );
}


samedi 29 juillet 2006 à 14:29:45 | Re : ToolStripMenuItem qui m'énerve..

Lutinore

Administrateur CodeS-SourceS

Encore un autre problème, j'aimerais utiliser le même ToolStripMenuItem à la fois pour le MenuStrip et pour le ContextMenuStrip mais si j'assigne le ToolStripMenuItem au ContextMenuStrip il disparait du MenuStrip !??

Est ce qu'il y a un moyen d'utilise le même ToolStripMenuItem ( sans en faire une copie ) ?


private void InitializeForm( )
{
    this.SuspendLayout( );

    ToolStripMenuItem scanItem = new ToolStripMenuItem( );
    scanItem.Text = "&Scan Network";
    scanItem.Image = Resource.Scan;
    scanItem.ShortcutKeys = Keys.Control | Keys.F5;
    scanItem.Click += delegate { MessageBox.Show( "Scanning.." ); };

    ToolStripMenuItem exitItem = new ToolStripMenuItem( );
    exitItem.Text = "E&xit";
    exitItem.ShortcutKeys = Keys.Alt | Keys.F4;
    exitItem.Click += delegate { this.Close( ); };

    ToolStripMenuItem networkItem = new ToolStripMenuItem( );
    networkItem.Text = "&Network";
    networkItem.DropDownItems.AddRange
    (
        new ToolStripItem[ ]
        {
            scanItem,
            new ToolStripSeparator( ),
            exitItem
        }
    );
  
    MenuStrip menuStrip = new MenuStrip( );
    menuStrip.Items.Add( networkItem );

    ContextMenuStrip contextMenu = new ContextMenuStrip( );
    //contextMenu.Items.Add( scanItem ); // <-- le scanItem ne s'affiche plus dans le MenuStrip.

    this.MainMenuStrip = menuStrip;
    this.ContextMenuStrip = contextMenu;
    this.Controls.Add( menuStrip );

    this.ResumeLayout( );
}


samedi 29 juillet 2006 à 14:38:18 | Re : ToolStripMenuItem qui m'énerve..

coq

Administrateur CodeS-SourceS
Salut,

Non, aucun espoir de ce côté là, l'implémentation de Add se charge de changer le propriétaire de l'item. :-)



/*
coq
MVP Visual C#
CoqBlog
*/

samedi 29 juillet 2006 à 14:51:17 | Re : ToolStripMenuItem qui m'énerve..

Lutinore

Administrateur CodeS-SourceS
Ah mince alors.. et moi qui voulait faire une application "légère".

Merci.

samedi 29 juillet 2006 à 15:02:33 | Re : ToolStripMenuItem qui m'énerve..

Lutinore

Administrateur CodeS-SourceS
Je vais peut être créer mes menus dynamiquement comme avec l'évènement Popup des anciens MenuItems.



Cette discussion est classé dans : network, imagelist, toolstripmenuitem, menustrip, scanitem


Répondre à ce message

Sujets en rapport avec ce message

imagelist ? [ par Thanos_the_yopper ] comment faire pour rajouter une image dans une image liste, en spécifiant le chemin de l'image ? (c'est assez bizzare comment Visual Studio fait ça to Dll et bitmap...resource ? [ par bigflo ] Salut a tous,J'ai une class library project afin de faire une dll.Le pb est que pour l'imagelist qui se trouve dans une class de la dll je fait ceci : Retour d'une string [ par EksTaZia ] j'ai un chat ou g separer l'interface du code réseau (donc 2 .cs= 1 network et 1 system)j'appel une fonction connection située dans le system, et je v --------------------> ImageList ??? <-------------------- [ par typhoun ] Je ne comprend pas bien à quoi sert la classe ImageList. Si qqun peut me l'expliquer un peut, ce serai simpa.merci. [Winform] [UserControl] Sauver les collections [ par stailer ] Bonsoir tout le monde, je n'arrive pas à implémenter la méthode SET ci-dessous. En fait, dans l'éditeur de Visual Studio je peux bien ajouter des imag imagelist toolbar et windows98 [ par nolius ] salut, je suis en train de programmer une application en c# munie d'une toolbar. j'ai charger les images de ma toolbar dans une imagelist et associé l Récupérer les icônes types des fichiers connus par Windows [ par nerix27 ] Bonjour,je développe une appli ressemblant à l'exploreur de Windows...Pour lui ressembler à la goutte d'eau, je veux afficher l'icône type en face du listview et SmallImageList [ par emmanuel9 ] Bonjour, le problème est le suivant, je fais ImageList * il = new ImageList() ; il->Images->Add(new</F [C#] ImageList & Transparence (Alphablend) [ par scoubidou944 ] On a vu dans un topic validé récemment que : this.Image = new Bitmap( GetType(), "resources.LED_Red.pn MenuStrip [ par tahiti_bob ] Bonjour, J'utilise Visual C# Express 2005 version bêta 1 avec .NET framework 2.0 bêta. Pouquoi est ce lorsque j'utilise le composant MenuStrip je ne p


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Comparez les prix Nouvelle version


HTC G1

Entre 449€ et 449€


Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 3,572 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.