【发布时间】:2011-08-16 11:02:48
【问题描述】:
我在 c# 中有一个 Winforms PropertyGrid,它控制从嵌入式系统获取和设置的数据。
我将有关设备的查询(GetFrequency、SetPowerLimit、SetACCurrent 等)编写为属性,以便我可以绑定数据,而无需为要创建的表单中的每个命令编写其他方法。
PropertyGrid 工作得非常好,我的意思是它显示了我需要的所有数据并让我更改它们的值。但当然并非总是如此。
由于必须运行的设备的这种黑盒情况,程序在某些时候会正常停止。 (即当您关闭设备时。)
例如,这是我必须经常从设备读取的值。 “思敏”
[Category("Editable Values"), Description("Sets the minimum select...")]
public Ampere Simin
{
get
{...}
set
{...}
}
在 Getter 和 Setter 中,我有这些 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 初始化时,但它不起作用。
我的问题是,如果是 Button 或 Textfield,我可以轻松捕获事件方法中的异常,但我不知道如何处理 PropertyGrid 抛出的异常。
有什么意见吗?
【问题讨论】:
-
亲爱的第一个反对者,您至少可以发表评论。但是你不喜欢看到人们提高自己是吗?
-
我不是反对者,我可能不会反对 - 但这可能是由于缺少一些代码来说明您如何使用 PropertyGrid。
-
什么时候抛出这些异常?当用户在属性网格中编辑值或通过代码中的某些事件更新值时?
-
@iandotkelly,我的错。但是thanxalot的建议
-
@3yanlist1bos - 完全没问题。就像看到人们在这里得到很好的帮助一样。
标签: c# exception-handling propertygrid