我需要将一堆表单放入列表中,并知道表单是否已存在。
由于与此问题无关的原因,我实际上无法引用列表中的表单。
我可以使用winform上的ID或Guid吗?或者我应该只为我的所有表格添加一个Guid?
请注意,这是Compact Framework。因此,“ID”需要在.NETCF 3.5中提供。
答案 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继承)也可以做到这一点。