2016-06-24 3 views
0

Я разрабатываю пользовательскую библиотеку с настраиваемыми элементами управления. Мне нужна Visual Studio показывает сообщение в режиме дизайна, когда пользователь вставляет недопустимое значение в пользовательское свойство, как это делает visual studio при попытке Color.Transparent для BorderColor в Button.Исключение сообщения об отказе в пользовательском свойстве

Кусок кода:

Public Class ButtonWithBrigthness 'It inherits from Button in .Designer.vb 

    Private _brigthness As Integer 

    Public Property Brightness() As Integer 
    Get 
     Return _brigthness 
    End Get 
    Set (value as Integer) 
     If (value >= 0 And value <= 10) Then 
      _brigthness = value 
     Else 
      'Throw Exception for an invalid value.... 
     End If 
    End Set 
    End Property 

End Class 
+1

Просто используйте 'MessageBox.Show (" недопустимое значение ")', а не бросать исключение –

ответ

1

Чтобы знать, если вы находитесь в режиме конструктора или нет, вы можете использовать DesignMode Property.

Далее вам нужно знать, что если вы создадите исключение из средства настройки свойств в режиме проектирования, сетка свойств поймает его и отобразит окно с сообщением «Недопустимое значение свойства», пользователь может нажать «Подробности», чтобы увидеть введенное пользовательское сообщение. Если вы хотите сделать лучше, вы увидите окно сообщений, указывающее, почему оно не работает.

Во всяком случае, если вы хотите поднять исключение:

Public Property Brightness() As Integer 
    Get 
     Return _brigthness 
    End Get 
    Set (value as Integer) 
     'I rewrote the condition, but you don't have to, just put the exception in the else... 
     If value < 0 Or value > 10 Then 
      'Here we throw the Exception only in design mode 
      'So at runtime just nothing will happen... 
      If Me.DesignMode Then 
       Throw New ArgumentOutOfRangeException("Brightness must be between 0 and 10") 
      End If 
     Else 
      _brigthness = value 
     End If 
    End Set 
End Property 

И если вы хотите, чтобы показать хороший ящик сообщение ...

Public Property Brightness() As Integer 
    Get 
     Return _brigthness 
    End Get 
    Set (value as Integer) 
     If value < 0 Or value > 10 Then 
      'Here we show the MessageBox only in design mode 
      'So at runtime just nothing will happen... 
      If Me.DesignMode Then 
       MessageBox.Show("Brightness must be between 0 and 10", "Invalid Brightness Value") 
      End If 
     Else 
      _brigthness = value 
     End If 
    End Set 
End Property 
+0

Я выполнил ваши шаги, но ничего не происходит, когда я изменяю его значение (вне диапазона) в редакторе формы. – mzurita

+0

Я настоятельно рекомендую вам добавить 'Debug.Writeline (« Something »)' в некоторые моменты, чтобы узнать, где идет ваш код ... потому что я тестировал этот код, и он работал нормально. Согласно вашему [другому вопросу] (http://stackoverflow.com/questions/38009601/how-to-show-a-custom-property-in-design-editor-of-visual-studio), проблема заключается не в том, что вашего кода, но из-за ошибки в VS ... –

+0

Хорошо, теперь это работает как шарм! спасибо – mzurita

Смежные вопросы