关于泛型控件和窗体继承。。。

lovingkiss 2018-06-25 09:48:10
泛型控件的继承,继承后无法进行可视化编辑
网络上给出的解决方案,是增加一层中间继承的类。
但是这样会导致,有多少个继承就要增多多少个无谓的中间层。

有没有更好的解决办法,或者说能写个通用的中间层。
...全文
173 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
xuzuning 2018-06-25
  • 打赏
  • 举报
回复
泛型控件 是什么?
lovingkiss 2018-06-25
  • 打赏
  • 举报
回复
引用 3 楼 sp1234 的回复:
我们开发一个一个自定义组件,总归是要产生 cs、designer.cs 文件等等工程文件。

别被“泛型”这个字眼儿给弄得头脑发昏,好像有了泛型概念就不用开发和保存组件的文件了似地。


这是两个概念好吧,一个自定义的泛型组件,还要再搭配一个中间层组件才能正常使用。
而且也只是因为编译器的不识别,并不是逻辑上不可行。
如果将来vs20XX版实现了这个功能,你今天说的话岂不是打脸?
lovingkiss 2018-06-25
  • 打赏
  • 举报
回复
引用 1 楼 sp1234 的回复:
比如说 X<T>,这里什么是类型?难道你以为 X 是一个单独的类型?

你要实际去“编辑”,自然地,你就需要写 X<int>、X<string>、X<MyType> 之类的实际的类型。这时候你就必须给每一个真正的类型指定一次名称。而 vs 不过就是让你写个
class ABC: X<int>
{
.....
}
这类而已,这不叫做“无谓的中间层”,因为你起的名字 ABC 是用来索引这种实际的代码生成内容的程序地址的。而 X<int> 并不能(至少现在还没有)表示由 vs 生成的代码,它只能表示运行时由 JIT 编译器处理的代码。


我不太赞同你的观点
class ABC: X<int>
{
.....
}

class ABCD: ABC
{
.....
}
对于设计器来说,能够认定ABCD已经可以可视化编辑了,
对于ABC来说,完全“有能力”可以认定已经对泛型实例化了——只是编译器没有做“识别”而已。
你也说了,这属于(至少现在还没有)。只是没有,不代表将来做不到对吧。
  • 打赏
  • 举报
回复
我们开发一个一个自定义组件,总归是要产生 cs、designer.cs 文件等等工程文件。

别被“泛型”这个字眼儿给弄得头脑发昏,好像有了泛型概念就不用开发和保存组件的文件了似地。
  • 打赏
  • 举报
回复
你如果调用编辑器组件,完全可以自己把编辑结果保存下来,然后将来实例化对象实例时再去为对象赋值。这是你自己的设计。

但是假设你使用 vs,并且将结果保存为 cs 文件和 designer.cs 文件等,那么就按照它的设计,没有什么“泛型cs文件、泛型designer.cs文件”这种文件。你总归是要给每一个这种文件命名的,是真实地个性化的文件命名,并不是什么“无谓的”命名。
  • 打赏
  • 举报
回复
比如说 X<T>,这里什么是类型?难道你以为 X 是一个单独的类型?

你要实际去“编辑”,自然地,你就需要写 X<int>、X<string>、X<MyType> 之类的实际的类型。这时候你就必须给每一个真正的类型指定一次名称。而 vs 不过就是让你写个
class ABC: X<int>
{
.....
}
这类而已,这不叫做“无谓的中间层”,因为你起的名字 ABC 是用来索引这种实际的代码生成内容的程序地址的。而 X<int> 并不能(至少现在还没有)表示由 vs 生成的代码,它只能表示运行时由 JIT 编译器处理的代码。
lovingkiss 2018-06-25
  • 打赏
  • 举报
回复
引用 6 楼 xuzuning 的回复:
泛型控件 是什么?


引用 7 楼 qq_17486399 的回复:
泛型控件是什么?怎么样的一种概念?或者说的泛型控件只是泛型集合?


引用 8 楼 hanjun0612 的回复:
泛型控件是什么?
这个泛型对控件有哪些影响?


就是普通控件,加上泛型的约束。
例如 public class ExtGridView<T>:Usercontrol....

在使用时,可以直接传递类型进入,返回值比较方便 可以直接返回T DataItem

内部处理也可以根据T的约束直接写通用方法。
正怒月神 2018-06-25
  • 打赏
  • 举报
回复
泛型控件是什么?
这个泛型对控件有哪些影响?
大鱼> 2018-06-25
  • 打赏
  • 举报
回复
泛型控件是什么?怎么样的一种概念?或者说的泛型控件只是泛型集合?
很好的C#培训教程,适合初学者使用 目 录 1 .NET体系结构 7 1.1 什么是.NET Framwork? 7 1.2 .NET Framework的内容 7 1.3 如何用.NET Framework编写应用程序 8 1.4 MSIL和JIT 8 1.5 程序集 9 1.6 托管代码 9 1.7 垃圾回收 9 1.8 链接 10 1.9 实例分析 11 1.10 内容总结 13 1.11 独立实践 14 2 C#基础 15 2.1 面向对象基本概念 15 2.2 变量 18 2.3 常量 22 2.4 预定义数据类型 22 2.5 流控制 28 2.6 数组 37 2.7 命名空间 38 2.8 C#预处理器指令 44 2.9 C#编程规则 46 2.10 内容总结 50 2.11 独立实践 50 3 对象和结构 52 3.1 类和结构 52 3.2 类和成员 53 3.3 构造函数 60 3.4 结构 65 3.5 部分类 68 3.6 内容总结 72 3.7 独立实践 72 4 继承 73 4.1 继承的类型 73 4.2 结构和类 75 4.3 调用函数的基类版本 76 4.4 抽象类和抽象函数 77 4.5 密封类和密封方法 79 4.6 修饰符 80 4.7 接口 81 4.8 内容总结 86 4.9 独立实践 86 5 委托与事件 88 5.1 事件的原理 88 5.2 简单的自定义事件 89 5.3 预定义事件处理机制 92 5.4 内容总结 100 5.5 独立实践 100 6 运算符和类型强制转换 101 6.1 运算符 101 6.2 运算符的简化操作 102 6.3 类型的安全性 107 6.4 类型转换 108 6.5 装箱和拆箱 111 6.6 对象的相等比较 112 6.7 引用类型的相等比较 112 6.8 运算符重载 114 6.9 运算符的工作方式 114 6.10 用户定义的数据类型转换 118 6.11 执行用户定义的类型转换 119 6.12 多重数据类型转换 126 6.13 内容总结 130 6.14 独立实践 131 7 字符串与正则表达式 132 7.1 System.String类 132 7.2 StringBuilder成员 135 7.3 字符串的格式化 138 7.4 正则表达式概述 142 7.5 内容总结 149 7.6 独立实践 150 8 集合 151 8.1 集合 151 8.2 索引器 152 8.3 集合接口 155 8.4 字典 157 8.4.1 现实生活中的字典 158 8.4.2 .NET中的字典 158 8.4.3 字典的工作情况 160 8.5 内容总结 167 8.6 独立实践 167 9 错误与异常 168 9.1 错误和异常 168 9.2 捕获异常 170 9.3 System.Exception属性 177 9.4 嵌套的 try块 178 9.5 用户定义的异常类 180 9.6 内容总结 189 9.7 独立实践 189 10 内存管理与指针 190 10.1 后台内存管理 190 10.2 值数据类型 190 10.3 引用数据类型 192 10.4 垃圾收集 194 10.5 释放未托管的资源 195 10.6 析构函数 195 10.7 IDisposable接口 196 10.8 实现IDisposable接口和析构函数 198 10.9 不安全的代码 199 10.10 指针 200 10.11 使用指针优化性能 213 10.12 内容总结 217 11 泛型 218 11.1 泛型的概念 218 11.2 使用泛型 219 11.3 可空类型 219 11.4 运算符和可空类型 220 11.5 System.Collections.Generic命名空间 227 11.6 定义泛型类 237 11.7 default关键字 239 11.8 约束类型 240 11.9 从泛型类中继承 247 11.10 泛型运算符 248 11.11 泛型结构 250 11.12 定义泛型接口 250 11.13 定义泛型方法 251 11.14 定义泛型委托 253 11.15 独立实践 253 12 反射 254 12.1 定制特性 254 12.2 编写定制特性 255 12.3 指定特性参数 258 12.4 VectorClass程序集 261 12.5 反射 263 12.6 查找定制特性 269 12.7 内容总结 273 13 线程 274 13.1 线程 274 13.2 多线程应用程序 275 13.3 线程的处理 276 13.4 线程的优先级 282 13.5 同步 283 13.6 同步问题 285 13.7 内容总结 288 14 Winform基本概念 289 14.1 .NET Windows应用程序开发 289 14.2 .NET框架类库简介 289 14.3 事件和事件处理程序 290 14.4 事件参数 290 14.5 Windows 应用程序 290 14.6 窗体属性、方法和事件 291 14.7 this 关键字 292 14.8 控件概念 292 14.9 各种类型控件 292 14.10 控件的一些通用属性 294 14.11 标签、文本框、按钮控件简介 295 14.12 列表框控件简介 296 14.13 复选列表框 296 14.14 组合框 296 14.15 内容总结 302 15 Winform控件 303 15.1 控件分类 303 15.2 在窗体之间建立链接 307 15.3 应用程序的启动和关闭 308 15.4 内容总结 308 16 高级用户界面 309 16.1 打印控件的使用 309 16.2 PrintDocument组件 309 16.3 PrintPreviewControl组件 310 16.4 PrintDialog 组件 310 16.5 PrintPreviewDialog组件 311 16.6 PageSetUpDialog控件 311 16.7 对话框 311 16.8 通用对话框 312 16.9 OpenFileDialog控件 312 16.10 SaveFileDialog控件 312 16.11 FontDialog控件 312 16.12 ColorDialog控件 312 16.13 MessageBox消息框 313 16.14 WinForms 中的可视效果 314 16.15 内容总结 315 17 MDI应用程序 316 17.1 SDI程序 316 17.2 MDI程序 316 17.3 MenuStrip和ToolStripMenuItem 317 17.4 toolStrip控件简介 318 17.5 StatusStrip控件 320 17.6 创建对话框 320 17.7 内容总结 321 18 ADO.NET编程 322 18.1 简介 322 18.2 ADO.NET 的优点 322 18.3 ADO.NET 结构 324 18.4 ADO.NET 的基本组件 325 18.5 DataReader 328 18.6 获取单个值 328 18.7 修改数据库中的数据 329 18.8 从SQL Server获取XML数据 329 18.9 DataAdapter 330 18.10 数据集:DataSet 330 18.11 DataTable 330 18.12 DataView 332 18.13 关系 332 18.14 数据绑定 333 18.15 DataRow 简介 335 18.16 操纵数据源中的值 336 18.17 内容总结 336 19 GDI+ 编程 337 19.1 理解绘图规则 337 19.2 测量坐标和区域 341 19.3 绘制可滚动的窗口 343 19.4 颜色 348 19.5 画笔和钢笔 351 19.6 绘制图形和线条 352 19.7 显示图像 355 19.8 绘制文本 357 19.9 字体和字体系列 359 19.10 内容总结 363 20 自定义控件 364 20.1 添加事件处理程序 368 20.2 添加更多的属性 370 20.3 内容总结 372 21 部署与安装 373 21.1 部署的设计 373 21.2 无干涉部署 387 21.3 内容总结 394 22 ASP.NET与Web窗口简介 395 22.1 应用程序方案 395 22.2 Web 应用程序开发周期 399 五个对象实现了服务器端的请求 403 22.3 ASP.NET 的演变 404 22.4 Global.asax 文件 405 22.5 发布网站 408 22.6 内容总结 408 23 ASP.NET中的内置对象 409 23.1 ASP.NET页面 409 23.2 虚拟目录 421 23.3 内容总结 423 24 Web服务器控件 424 24.1 Web 控件 424 24.2 复杂控件 429 24.3 内容总结 431 25 HTML控件 432 25.1 服务器控件 432 25.2 HTMLForm控件 432 25.3 Web服务器控件优缺点 433 25.4 HTML服务器控件优缺点 433 25.5 使用服务器控件设计页面建议 433 25.6 内容总结 439 26 深入服务器对象 440 26.1 Global.asax文件简介 441 26.2 Application 对象 446 26.3 HttpServerUtility类和Server对象 446 26.4 HttpSessionState类和Session对象 448 26.5 内容总结 449 27 ADO.NET WEB应用 450 27.1 回顾ADO.NET 450 27.2 模板概念 464 27.3 ASP.NET 中的数据处理 465 27.4 内容总结 466 28 WEB服务器基础 467 28.1 ASP.NET Web 服务 467 28.2 编写简单的 Web 服务 468 28.3 内容总结 470 28.4 独立实践 470 29 用户控件 471 29.1 用户控件开发 471 29.2 内容总结 479 29.3 独立实践 480 30 Web部署 481 30.1 使用XCOPY部署 481 30.2 使用Visual studio的Copy Web Site功能部署 482 30.3 使用Visual Studio的Precompilation预编译部署 482 30.4 内容总结 483 30.5 独立实践 484

110,539

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧