У меня есть таблица свойств Winforms в c #, которая управляет данными, полученными и настроенными из встроенной системы.
Я написал запросы об устройстве (GetFrequency, SetPowerLimit, SetACCurrent и т. Д.) В качестве свойств, чтобы я мог связывать данные, не записывая другой метод для каждой команды внутри формы, которую я хочу создать.
PropertyGrid работает очень хорошо, я имею в виду, что он показывает все данные, которые мне нужны, и позволяет мне изменять их значения. Но не всегда конечно.
Из-за этого черного ящика устройства, на котором приходится работать, программа в некоторых точках обычно останавливается. (т.е. когда вы выключаете устройство.)
Например, вот значение, которое мне приходится часто читать с устройства. "Симин"
[Category("Editable Values"), Description("Sets the minimum select...")]
public Ampere Simin
{
get
{...}
set
{...}
}
Внутри геттеров и сеттеров у меня есть эти методы get, которые устанавливают связь между компьютером и устройством. И они являются фактическим источником исключений, которые я беру в основном.
Как это
if (!_port.IsOpen)
{
throw new HuettingerException(Localisation.Error_PortClosed);
}
или это
// Read first 4 bytes
if (_port.Read(inputv, 0, 4) != 4)
{
throw new HuettingerException(Localisation.Error_NoConnection);
}
Итак, у меня есть три уровня абстракции, и я беру исключения со стороны машины (как показано выше), пока я пытаюсь прочитать некоторые данные. Я пытался поймать некоторые из них в начале как
public DeviceUI()
{
InitializeComponent();
try
{
propertyGrid1.SelectedObject = device;
}
catch (TimeoutException te) // i tried other exceptions too
{
MessageBox.Show(te.Message);
}
при инициализации winform, но это не сработало.
Моя проблема в том, что если бы это была кнопка или текстовое поле, я мог бы легко перехватывать исключения в методах событий, но я не имею ни малейшего представления об обработке исключения, которое выдается PropertyGrid.
Есть мнения?