【发布时间】:2011-05-17 11:42:05
【问题描述】:
我有一堆表格需要放在一个列表中,并知道表格是否已经在里面。
由于与此问题无关的原因,我实际上无法引用列表中的表单。
winform 上是否有我可以使用的 ID 或 Guid?还是应该在我的所有表单中添加一个 Guid?
请注意,这是紧凑型框架。所以“ID”需要在 .NETCF 3.5 中可用。
【问题讨论】:
标签: c# .net-3.5 compact-framework
我有一堆表格需要放在一个列表中,并知道表格是否已经在里面。
由于与此问题无关的原因,我实际上无法引用列表中的表单。
winform 上是否有我可以使用的 ID 或 Guid?还是应该在我的所有表单中添加一个 Guid?
请注意,这是紧凑型框架。所以“ID”需要在 .NETCF 3.5 中可用。
【问题讨论】:
标签: c# .net-3.5 compact-framework
窗口句柄 (hWnd) 应该可以解决问题。查找表单的 Handle 属性。
【讨论】:
我不知道 winform 中存在任何 ID。因此,我相信您为每个表单实例设置 GUID 的方法可能是一个可行的解决方案。您的表单只是一个类,一个具有属性的对象,我看不出 MS 会添加一个 ID 来标识特定表单的特定原因,因为这确实是一个特定要求,只是我的看法。
【讨论】:
我对 Compact Framework 了解不多。我会寻找 Form.Tag 属性。如果有,请使用它。此属性旨在用于程序员的意愿。
否则,您可以只概括一个 FormBase 类,您的其他表单将从该类继承。将 Guid 属性放入其中,以便您可以访问它来验证表单是否存在于列表中。
此外,Contains 方法将一个对象作为参数,因此传递您期望的表单的实例会告诉您您的表单是否在列表中。虽然这可能有点矫枉过正,因为您必须实例化您的表单以验证其是否存在于列表中。
另一种方法是使用Dictionary<Tkey, TValue>,您可以在其中为字典的 TKey 部分添加表单名称,为 TValue 添加表单名称。
【讨论】:
Form.Name(继承自 Control)也可以解决问题。
【讨论】: