如何为表单控件创建模板函数?

此语句将更改表单对象的位置。

lblMessage.Location = new Point(0,0); 

我想编写一个可以定位任何表单对象的通用模板函数

我想出了这个,但它无效:

 public void ChangePosition(T form_object) { form_object.Location = new Point(0,0); } 

我称之为:

  ChangePosition(lblMessage); 

错误:’T’不包含’Location’的定义,也没有扩展方法’Location’接受类型’T’的第一个参数(你是否缺少using指令或汇编引用?)

我是否需要在模板function上提及某种界面? 如何在generics类型上调用扩展方法?

您可以做的是添加where T : Control到函数定义的位置。 Control是定义Point Location的层次结构中的最高点。

 public void ChangePosition(T form_object) where T : Control { form_object.Location = new Point(0,0); } 

您不需要通用方法,您可以这样做:

 public void ChangePosition(Control form_object) { form_object.Location = new Point(0,0); } 

表单的所有控件的基类是具有Location属性的Control