我有一個C#Winforms PropertyGrid控制從嵌入式系統獲取和設置的數據。如何處理由propertygrid拋出的異常?
我將關於設備(GetFrequency,SetPowerLimit,SetACCurrent e.c.)的查詢寫爲屬性,以便我可以綁定數據,而無需爲要創建的窗體內的每個命令編寫另一個方法。
PropertyGrid的工作非常好,我的意思是它顯示我需要的所有數據,並讓我改變它們的值。但當然不總是。
由於必須處理的設備的這種黑盒子問題,程序通常在某些點停止。 (即關閉設備時)。
例如,這裏是我必須經常從設備讀取的值。 「Simin」
[Category("Editable Values"), Description("Sets the minimum select...")]
public Ampere Simin
{
get
{...}
set
{...}
}
在Getters和Setters中,我有這些get方法建立pc和設備之間的連接。它們是我主要採用的例外的實際來源。
喜歡這張
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拋出的異常。
有沒有意見?
親愛的第一位羽衆,你至少可以發表評論。但是你不喜歡看到人們自我改善嗎? – 3yanlis1bos
我不是downvoter,我可能沒有downvoted - 但它可能是由於缺乏一些代碼說明你如何使用PropertyGrid。 – iandotkelly
什麼時候拋出這些異常?當用戶在屬性網格中編輯值時,或者通過代碼中的某個事件更新值時? –