c# - 在设计时添加通用 Windows 窗体 UserControl
问题描述
我创建了一个像这样的通用用户控件:
public class MyControl<T>: TabControl
{
}
如果T
是原始类型,我会让我的用户控件非泛型,我会给用户一个选项作为选择类型的属性,但是T
可以是任何类类型。
我的用户控件在以编程方式添加时可以正常工作,但是,当我从工具箱中添加它时,会出现 3 个问题:
- 添加时显示空白控件(不是
TabControl
)
我希望看到一个普通的 TabControl,它没有任何通用性
- 我必须转到 Form.Designer.cs 文件并更改其声明以匹配我想要的类型
喜欢:
private MyControl myControl1;
至
private MyControl<AClass> myControl1;
和
this. myControl1 = new MyControl();
至
this. myControl1 = new MyControl<AClass>();
我知道当添加控件时它无法预测类会是什么,我并不期待一些魔法,但是有没有一种方法可以让用户在每次添加控件时都不需要去设计器并以某种方式解决一个属性的问题可能是什么?
- 在 Designer.cs 中进行更改后,表单设计器显示错误并且无法显示设计器。
这让我很紧张,为什么即使有一个通用声明也会给设计者带来错误(尽管在运行应用程序时它运行没有问题)。
解决方案
推荐阅读
- c# - 在对象内连接字符串?
- java - Api 与 Postman 一起工作,但不适用于 Android 应用程序
- filebeat - 我想排除 filebeat 读取的日志中的某些行,并且还想通过在 filebeat 中使用处理器来添加标签,但它不起作用
- elasticsearch - Exact-match, case-insensitive match without normalization in Elasticsearch 6.2
- ruby-on-rails - 如何修复 webpacker webpack-dev-server 不重新编译 scss 更改
- excel - Check if a worksheet contains any vba code
- c# - Why does a struct's field gets reset after the using statement?
- visual-studio - Update-Package -reinstall 不重新安装包
- node.js - 如何捕获来自 API {} 的空回复
- dart - How to navigate in a bottom navigation bar from another page?