首页 > 解决方案 > 在设计时添加通用 Windows 窗体 UserControl

问题描述

我创建了一个像这样的通用用户控件:

public class MyControl<T>: TabControl
{

}

如果T是原始类型,我会让我的用户控件非泛型,我会给用户一个选项作为选择类型的属性,但是T可以是任何类类型。

我的用户控件在以编程方式添加时可以正常工作,但是,当我从工具箱中添加它时,会出现 3 个问题:

  1. 添加时显示空白控件(不是TabControl

我希望看到一个普通的 TabControl,它没有任何通用性

  1. 我必须转到 Form.Designer.cs 文件并更改其声明以匹配我想要的类型

喜欢:

private MyControl myControl1;

private MyControl<AClass> myControl1;

this. myControl1 = new MyControl();

this. myControl1 = new MyControl<AClass>();

我知道当添加控件时它无法预测类会是什么,我并不期待一些魔法,但是有没有一种方法可以让用户在每次添加控件时都不需要去设计器并以某种方式解决一个属性的问题可能是什么?

  1. 在 Designer.cs 中进行更改后,表单设计器显示错误并且无法显示设计器。

这让我很紧张,为什么即使有一个通用声明也会给设计者带来错误(尽管在运行应用程序时它运行没有问题)。

标签: c#winformsgenericsuser-controls

解决方案


推荐阅读