社区
C#
帖子详情
自定义的复合控件,如何把复合控件中的某个控件的事件 定义成复合控件可以使用的事件?
wesleyluo
2009-03-25 05:10:59
请教高手:
比如自定义复合控件中有一个TextBox和一个DataGridView,现在我的自定义控件中就没有DataGridView的事件了,我要怎么把这些事件也加到复合控件中去呢?
高手请指教!
...全文
86
12
打赏
收藏
自定义的复合控件,如何把复合控件中的某个控件的事件 定义成复合控件可以使用的事件?
请教高手: 比如自定义复合控件中有一个TextBox和一个DataGridView,现在我的自定义控件中就没有DataGridView的事件了,我要怎么把这些事件也加到复合控件中去呢? 高手请指教!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
12 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
wesleyluo
2009-03-27
打赏
举报
回复
哈哈,我再研究下。
wesleyluo
2009-03-26
打赏
举报
回复
shaohua的方法太好了,我搞定了,讓我又學到了不少。哈哈
ztenv
2009-03-26
打赏
举报
回复
方法还不算太好,因为事件中与DataGridView的事件参数耦合到一起了,一般来讲这么做可行,但如果将DataGridView控件换成其它的控件(ListView)时,你就惨了,所有订阅事件的地方全都要改,这时为了消除这种情,你需要自己定义事件参数(即不要使用DataGridViewCellEventArgs而是重新定义自己的事件参数,事件参数中的数据从DataGridViewCellEventArgs实例中取得,这样当你包装的DataGridView更改时,只需要更改你本控件内部的OnCellClick()方法即可,你控件外部无须做任何更改;
这样做的工作量太大,有时就偷懒按下面的方法做,
***************************************************************************************
在复合控件中声明相应的事件:
public event DataGridViewCellEventHandler CellClick;
复合控件的构造函数()
{
DataGridView.CellClick+=delegate(object sender,DataGridViewCellEventArgs e)
{
OnCellClick(e);
};
}
protected virtual void OnCellClick(DataGridViewCellEventArgs e)
{
DataGridViewCellEventHandler dg=CellClick;
if(dg!=null)
{
dg(this,e);
}
}
jy251
2009-03-25
打赏
举报
回复
[Quote=引用 2 楼 lianshaohua 的回复:]
在复合控件中声明相应的事件:
public event DataGridViewCellEventHandler CellClick;
复合控件的构造函数()
{
DataGridView.CellClick+=delegate(object sender,DataGridViewCellEventArgs e)
{
OnCellClick(e);
};
}
protected virtual void OnCellClick(DataGridViewCellEventArgs e)
{
DataGridViewCellEventHandler dg=CellClick;
if(dg!=null)
{
dg(this,e);
}
}
[/Quote]
正解!
gisyellow
2009-03-25
打赏
举报
回复
在复合控件中声明DataGridView对应的事件,注意委托签名要保持一致。
然后在DataGridView的对应事件中触发复合控件的对应事件。
wesleyluo
2009-03-25
打赏
举报
回复
好的,我明天用lianshaohua 和 agentianle的方法都试下。
homejiji
2009-03-25
打赏
举报
回复
mark
天乐
2009-03-25
打赏
举报
回复
2楼的不错,就是代理模式的思想
另外说一句,你要是嫌麻烦,想偷懒,直接弄个DataGridView属性让外部可以访问就得了
毕竟DataGridView那么多的事件,一个个的写起来很累啊
要不你再用反射写个代码生成器,直接生成一下吧
SealedLove
2009-03-25
打赏
举报
回复
UP 楼上思路不错
ztenv
2009-03-25
打赏
举报
回复
希望对你的想法有帮助。。。。。。
ztenv
2009-03-25
打赏
举报
回复
在复合控件中声明相应的事件:
public event DataGridViewCellEventHandler CellClick;
复合控件的构造函数()
{
DataGridView.CellClick+=delegate(object sender,DataGridViewCellEventArgs e)
{
OnCellClick(e);
};
}
protected virtual void OnCellClick(DataGridViewCellEventArgs e)
{
DataGridViewCellEventHandler dg=CellClick;
if(dg!=null)
{
dg(this,e);
}
}
麻子Mozart
2009-03-25
打赏
举报
回复
帮顶
C#
自
定义
控件
库
"C#
自
定义
控件
库"是指
使用
C#语言编写的、由开发者
自
定义
的
控件
集合,这些
控件
可以扩展.NET Framework的标准
控件
集,为用户提供更丰富的界面元素和功能。
自
定义
控件
是软件开发
中
的一个重要环节,特别是在UI设计和用户...
自
定义
图谱
控件
使用
范例
在
自
定义
控件
中
,我们需要重写OnPaint或类似的
事件
处理方法,
使用
图形API(如GDI+或Direct2D)来直接控制像素的绘制。这包括画线、填充区域、设置颜色和透明度等,以构建出所需的图形效果。 在提供的文件列表
中
,`...
C#
自
定义
控件
的制作.doc
通过深入理解C#
控件
的工作原理,开发者可以创建出满足特定需求的复杂组件,甚至可以将这些组件封装
成
库供其他开发者
使用
。因此,掌握
自
定义
控件
的制作对于C#开发者来说是非常有价值的技能。希望这个简单的教程能为你...
Android
自
定义
日历
控件
在Android开发
中
,
自
定义
日历
控件
是一个常见的需求,特别是在设计日程管理、时间规划等应用时。本文将深入探讨如何在Android
中
创建一个
自
定义
的日历视图,主要基于提供的"CustomCalendarView"这一文件名,我们可以...
Android
自
定义
控件
实现ViewPagerIndicator 高仿MIUI
6. **
自
定义
属性**:为了方便在XML布局文件
中
使用
和配置
自
定义
控件
,可以
定义
一些
自
定义
属性,如颜色、大小、间距等。这些属性可以通过attrs.xml文件
定义
,然后在
自
定义
View的构造函数
中
解析。 在提供的Demo_zhy_20...
C#
111,126
社区成员
642,541
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章