2016-09-19 8 views
0

私は、SystemIconをパラメータとして渡す必要がある関数を持っていますが、タイプとしてSystemIconを指定することができないようです - アイコンのみを指定できます。SystemIconをパラメータ値として使用するにはどうすればよいですか?

ShowMessage(message As String, icon As Icon) //works 

ShowMessage(message As String, icon As SystemIcon) //fails 

どのようにしてパラメータタイプをより具体的にすることができ、SystemIconのみ許可できますか?

答えて

1

Neoliskの答えに基づいて拡張するには、SystemIcons.ApplicationとIntellisenseを見ると、タイプがDrawing.Iconであることがわかります。

私は最近カスタムメッセージボックスを作成し、同じ問題を抱えていました。私はそうのようなSystemIconsの特性に合わせて、列挙型を作成し、関係を思い付いた解決策:

Public Enum CustomMessageBoxIcon 
    Application 
    Asterisk 
    [Error] 
    Exclamation 
    Hand 
    Information 
    Question 
    Shield 
    Warning 
End Enum 

は、これは私が法上のインテリセンスのオプションを与えることができます、だけでなく、彼らは法に送ることができるものを制限します。以下に示す例:

Private Shared Function GetIconFromEnumOptions(ByVal icon As CustomMessageBoxIcon) As Icon 
     Select Case icon 
      Case CustomMessageBoxIcon.Application 
       Return SystemIcons.Application 
      Case CustomMessageBoxIcon.Asterisk 
       Return SystemIcons.Asterisk 
      Case CustomMessageBoxIcon.Error 
       Return SystemIcons.[Error] 
      Case CustomMessageBoxIcon.Exclamation 
       Return SystemIcons.Exclamation 
      Case CustomMessageBoxIcon.Hand 
       Return SystemIcons.Hand 
      Case CustomMessageBoxIcon.Information 
       Return SystemIcons.Information 
      Case CustomMessageBoxIcon.Question 
       Return SystemIcons.Question 
      Case CustomMessageBoxIcon.Shield 
       Return SystemIcons.Shield 
      Case CustomMessageBoxIcon.Warning 
       Return SystemIcons.Warning 
      Case Else 
       Return SystemIcons.WinLogo 
     End Select 
    End Function 
+0

はい、これはオプションです。私はそれをCustomMessageBoxIconと呼ぶのではなく、むしろSystemMessageBoxIcon、StandardMessageBoxIconなどと呼んでいます。 「カスタム」は通常、デフォルトの設定が気に入らないことを意味します。 SystemIconsはOSが提供するデフォルトですが。 – Neolisk

+0

ええ、私はあなたのポイントを参照してください名前は、この列挙型は、カスタムアイコンではなく、私のCustomMessageBoxでのみ使用されていることを示すことでした..その変更をしなければならない –

1

SystemIconsは列挙型ではありません。

あなたは、あなたのメソッドの開始時にコードチェックを追加し、あなたのアイコンが存在し、それらのいずれかに属しているかどうかを見ることができます:それは、それぞれがIconオブジェクトを表す、静的プロパティを持つクラスですSystemIconsクラス内の。そうでない場合は、ArgumentExceptionを投げてください。

独自の列挙型を作成し、それを引数として使用することもできます。これはコード内の対応するシステムIconオブジェクトを取得します。

関連する問題