微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

覆盖C#中面板的控件属性

我必须重写从Windows的Panel控件扩展的myControl的“Controls”属性的Add方法。 为此,我将ControlCollection类扩展到了MyControlCollection,我重写了它的Add方法。 现在我声明了MyControlCollectiontypes的Controls属性来隐藏面板的Controls属性。 当我访问this.Controls.Add(控制)时,它指向重写Add方法。 但是,如果我拖拽并在myControl上的控件行为是基本types的添加方法。 任何机构可以提出这个问题的原因和补救办法吗? 提前致谢。

所有的.NET框架版本都包含在新的Windows版本中?

如何以编程方式说明XP 64位和Server 2003 64位之间的区别

安装依赖的Windows服务

如何更快地更改DataGridView控件中的行样式(C#)?

System.Windows.Forms.TextBox中的水印

您可以改为覆盖CreateControlCollection函数,并返回您选择的类的一个实例,继承System.Web.UI.ControlCollection。 从你的类中移除Controls属性,你不需要覆盖或者隐藏原来的实现。

原因是设计师调用Control.Controls而不是访问您的单独的集合。 说实话,你的解决方案听起来像注定会造成麻烦 – 隐藏成员通常会这样做。

你究竟想达到什么目的? 看起来好像在ControlCollection中没有好的事件,但是可能有不同的方法解决这个问题。

编辑:我刚才看到, Control有ControlAdded事件 – 会订阅这就够了吗?

其实我必须限制在我的控制添加控件,如果一些标志是真实的。 我使用了ControlAdded事件,但仅添加了问题。 ControlAdded仅在位置0,0处的父项中添加该控件后触发。在引发该事件后,它会在放置时根据鼠标位置重新定位控件。 如果我从ControlAdded的EventHandler异常中删除父控件的新控件。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐