Windows窗体是否有任何可以唯一标识它的东西?

时间:2010-11-29 19:54:55

标签: c# .net-3.5 compact-framework

我需要将一堆表单放入列表中,并知道表单是否已存在。

由于与此问题无关的原因,我实际上无法引用列表中的表单。

我可以使用winform上的ID或Guid吗?或者我应该只为我的所有表格添加一个Guid?

请注意,这是Compact Framework。因此,“ID”需要在.NETCF 3.5中提供。

4 个答案:

答案 0 :(得分:4)

窗口句柄(hWnd)应该可以解决问题。查找表单的Handle属性。

答案 1 :(得分:1)

我不知道winform中有任何ID。因此,我相信您为每个表单实例提供GUID的方法可能是一个可行的解决方案。你的表单只是一个类,一个具有属性的对象,我没有看到MS为什么会添加一个ID来识别特定表单的特殊原因,因为这确实是一个特定的要求,只是我的意见。

答案 2 :(得分:0)

我对Compact Framework了解不多。我会寻找 Form.Tag 属性。如果有,请使用它。此属性旨在用于程序员的意愿。

否则,您可以概括一个FormBase类,其他表单将从该类继承。将Guid属性放入其中,以便您访问它以验证表单中是否存在表单。

此外,Contains方法将对象作为参数,因此传递预期表单的实例会告诉您表单是否在列表中。虽然这可能有点矫枉过正,因为您必须实例化表单以验证其是否存在于列表中。

另一种方法是使用Dictionary<Tkey, TValue>,您可以在其中为字典的TKey部分添加表单的名称,并为TValue添加表单。

答案 3 :(得分:0)

Form.Name(从Control继承)也可以做到这一点。