C#Generics和Winform

Nat*_*han 8 c# generics winforms

是否可以将泛型类型T传递给winform的实例,以便T在整个表单中可用?

Hen*_*man 10

是的,表格就像任何其他类一样.您将不得不稍微修改设计器生成的代码,并注意不会回滚.

  // TestForm.cs
  public partial class TestForm<T> : Form

 // TestForm.Designer.cs
 partial class TestForm<T>
Run Code Online (Sandbox Code Playgroud)

  • 请注意,通用表单不能在表单设计器中显示,尽管它们的dscendants可以. (6认同)
  • 派生的具体形式是不可设计的. (2认同)

Mar*_*ell 6

正如所建议的,这是可以完成的 - 但在很多情况下,您会发现自己与框架等作斗争。IMO,将 a 传递Type到表单中(也许作为属性),并通过属性object(或接口/基类(如果适用)。

可以使用泛型,但在许多情况下,在这种情况下它实际上不会对您有多大帮助,而且设计者讨厌它。

  • VS2010 设计师 Marc 似乎对通用表单没有任何问题。但它在表单继承上完全失败了。 (3认同)