2010-12-06 11 views
2

Je développe actuellement une application C#. Je crée ma propre boîte de message personnalisée et je me demandais s'il serait possible pour moi d'attribuer une icône système par défaut (c'est-à-dire l'une des icônes que vous verriez sur un MessageBox standard) à une étiquette.Attribuer une icône système à une étiquette

Toute aide à ce sujet serait grandement appréciée.

Merci

Répondre

4

Vous pouvez interagir avec System.Drawing et System.Windows.Forms:

System.Drawing.Icon icon = System.Drawing.SystemIcons.Warning; 

BitmapSource bs = System.Windows.Interop.Imaging.CreateBitmapSourceFromHIcon(icon.Handle, Int32Rect.Empty, BitmapSizeOptions.FromEmptyOptions()); 

image1.Source = bs; 
+0

Bonne suggestion. "image1.Source devrait = bs" probablement être "this.Icon = bs" –

+2

Doh! Je n'ai jamais remarqué cette classe SystemIcons ... donc je l'ai implémenté moi-même. Je déteste réaliser que j'ai réinventé la roue ... –

1

solution de SLaks est probablement le moyen le plus facile d'aller. Si, pour une raison quelconque, vous ne souhaitez pas utiliser Windows Forms fonctionnalités, il est assez facile de vous mettre en œuvre:

public enum SystemIcons 
{ 
    Application = 32512, 
    Error = 32513, 
    Hand = Error, 
    Question = 32514, 
    Warning = 32515, 
    Exclamation = Warning, 
    Information = 32516, 
    Asterisk = Information, 
    WinLogo = 32517, 
    Shield = 32518, 
} 

public static ImageSource LoadSystemIcon(SystemIcons iconId) 
{ 
    string iconName = "#" + ((int)iconId); 
    IntPtr hIcon = LoadIcon(IntPtr.Zero, iconName); 
    if (hIcon == IntPtr.Zero) 
     return null; 

    return System.Windows.Interop.Imaging.CreateBitmapSourceFromHIcon(
     hIcon, Int32Rect.Empty, BitmapSizeOptions.FromEmptyOptions()); 
} 

[DllImport("user32.dll")] 
static extern IntPtr LoadIcon(IntPtr hInstance, string lpIconName); 
6
System.Drawing.Icon myIcon = new System.Drawing.Icon(System.Drawing.SystemIcons.Question,32,32); 
label.Image = myIcon.ToBitmap(); 
Questions connexes