2010-12-06 6 views
2

現在、C#アプリケーションを開発中です。自分のカスタムメッセージボックスを作っているので、デフォルトのシステムアイコン(標準のMessageBoxに表示されるアイコンの1つ)をラベルに割り当てることができるかどうか疑問に思っていました。ラベルにシステムアイコンを割り当てる

この件に関するお手伝いをさせていただきます。

おかげ

答えて

4

あなたがSystem.Drawingとの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

良い提案。 "image1.Source should = bs"はおそらく "this.Icon = bs"となるでしょう –

+2

Doh!私はこのSystemIconクラスに気付かなかったので、私はそれを自分で実装しました。私は車輪を再発明したことに気づきません... –

1

SLaksのソリューションは、おそらく行くための最も簡単な方法です。何らかの理由で、あなたがWindowsの機能をフォームを使用したくない、場合、それは自分自身を実装するために非常に簡単です:

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(); 
関連する問題