2016-09-19 4 views

Antwort

1

Um auf Neolisk's Antwort zu erweitern, wenn Sie SystemIcons.Application mit Intellisense anzeigen, können Sie sehen, dass es vom Typ Drawing.Icon ist.

Ich habe vor kurzem eine benutzerdefinierte Nachricht erstellt und über das gleiche Problem, das Sie haben. Die Lösung kam ich mit auf eine Enum Schaffung der SystemIcons Eigenschaften wie so passen:

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

Dies ermöglicht es mir Intellisense Optionen auf der Methode zu geben, sowie die Beschränkung, was sie in die Methode senden. Beispiel unten gezeigt:

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

Ja, das ist eine Option. Ich würde es nicht CustomMessageBoxIcon und eher SystemMessageBoxIcon, StandardMessageBoxIcon oder ähnliches nennen. "Benutzerdefiniert" bedeutet normalerweise, dass Sie nicht mögen, was der Standard ist, also haben Sie Ihr eigenes erstellt. Während SystemIcons der Standard ist, den OS bietet. – Neolisk

+0

Ja, ich sehe Ihren Punkt, aber der Name war nur um zu zeigen, dass diese Enum nur von meiner CustomMessageBox verwendet wird, anstatt dass es ein benutzerdefiniertes Icon ist. Sollte sich das ändern, dann ändert sich auch der Name –

1

SystemIcons ist keine Aufzählung. Es ist eine Klasse mit statischen Eigenschaften, die jeweils ein Icon Objekt:

Sie könnten eine Codeprüfung am Anfang Ihrer Methode hinzufügen und sehen, ob Ihr Icon vorhanden irgendeinen von denen gehört in der SystemIcons-Klasse. Wenn nicht, werfen Sie eine ArgumentException.

Sie können auch Ihre eigene Enumeration erstellen und diese als Argument verwenden. Es würde ein entsprechendes System Icon-Objekt im Code ziehen.

Verwandte Themen