请教一个关于自定义控件的问题

x2640491663 2013-03-24 08:48:06
新手求助!
现在我有一个窗体Form1,其中有2个自定义控件UC1和UC2
假设我在UC1中有个TextBox控件,我需要在UC2的后台代码中获取这个TextBox对象,进行一些操作
应该用什么样的方法?谢谢
...全文
281 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
x2640491663 2013-03-26
  • 打赏
  • 举报
回复
经过这2天的努力学习,终于使用委托事件完成了这个问题,可以在UC2中定义委托方法 然后在From1窗体中的UC2控件上,在事件中会有一些自己添加的事件, 在这些事件中完成对于UC1中各种控件的操作,感觉这样实现应该是比较好的了
x2640491663 2013-03-25
  • 打赏
  • 举报
回复
多谢各位,已经解决了,重新设计了下结构 在UC1中添加了一些方法,例如在当前光标处添加文本框之列 然后在别的地方调用这个方法就好了,是我一开始想的太复杂了
gengchenhui 2013-03-25
  • 打赏
  • 举报
回复
说一下你的最初需求吧,为什么他需要获取这个textbox。
showtime5156 2013-03-24
  • 打赏
  • 举报
回复
uc1的设计应该有个addcontrol方法,手机打字麻烦,不详细说,见谅
x2640491663 2013-03-24
  • 打赏
  • 举报
回复
引用 10 楼 wanghui0380 的回复:
首先需要你介绍他们认识,这个过程可以像4楼那样,也可以使用事件委托 微软本身其实也做的类似设定,当然那种设定非常非常复杂,估计你一时半会儿弄不明白, 微软在介绍各组件认识并交互的那套东西可谓是相当的复杂。 有兴趣可以看“Site Component Container”之间的关系 容器、站点和组件 http://msdn.microsoft.com/zh……
谢谢,我也查到了用委托事件这个方法,等明天去试试吧
x2640491663 2013-03-24
  • 打赏
  • 举报
回复
引用 9 楼 sp1234 的回复:
比如说,你在Form上放一个TextBox,然后又放一个ComboBox,你见到它需要输入一个TextBox控件参数吗?那么假设是需要输入TreeView怎么办?需要其它值怎么办? 往往,简单的接口设计的考虑是重要的。技术并不重要。
UC1是一个别人写好的类似于word显示控件,UC2里面有一些选项,比如说文本框、选择框、下拉框之类的,点击UC2里面的选项,就可以在UC1中添加这个控件
x2640491663 2013-03-24
  • 打赏
  • 举报
回复
引用 7 楼 showtime5156 的回复:
详细的说说你的需求,uc1是展示内容,他应该有一个或多个属性是和外面通信的,但他不需要知道谁在和他通信,他做好处理展示就好了。uc2是工具箱,这个说明不是很懂
UC1是一个别人写好的类似于word显示控件,UC2里面有一些选项,比如说文本框、选择框、下拉框之类的,点击UC2里面的选项,就可以在UC1中添加这个控件
wanghui0380 2013-03-24
  • 打赏
  • 举报
回复
首先需要你介绍他们认识,这个过程可以像4楼那样,也可以使用事件委托 微软本身其实也做的类似设定,当然那种设定非常非常复杂,估计你一时半会儿弄不明白, 微软在介绍各组件认识并交互的那套东西可谓是相当的复杂。 有兴趣可以看“Site Component Container”之间的关系 容器、站点和组件 http://msdn.microsoft.com/zh-cn/library/zhe6k1tz.aspx
  • 打赏
  • 举报
回复
比如说,你在Form上放一个TextBox,然后又放一个ComboBox,你见到它需要输入一个TextBox控件参数吗?那么假设是需要输入TreeView怎么办?需要其它值怎么办? 往往,简单的接口设计的考虑是重要的。技术并不重要。
  • 打赏
  • 举报
回复
引用 楼主 x2640491663 的回复:
新手求助! 现在我有一个窗体Form1,其中有2个自定义控件UC1和UC2 假设我在UC1中有个TextBox控件,我需要在UC2的后台代码中获取这个TextBox对象,进行一些操作 应该用什么样的方法?谢谢
你的UC2怎么设计的?它凭什么要获取一个TextBox对象? 无论如何,一个控件都是一个单独的应用程序,它在你设计Form1之前就存在了,它是用来重用的。 如果不能独立地设计一个自定义控件,那么你就根本没有必要去设计什么自定义控件。不要追逐(设计自定义控件的)时髦反而显得画蛇添足。
showtime5156 2013-03-24
  • 打赏
  • 举报
回复
详细的说说你的需求,uc1是展示内容,他应该有一个或多个属性是和外面通信的,但他不需要知道谁在和他通信,他做好处理展示就好了。uc2是工具箱,这个说明不是很懂
x2640491663 2013-03-24
  • 打赏
  • 举报
回复
引用 4 楼 showtime5156 的回复:
应该可以在uc2上获得form的对象引用,然后通过该对象获得uc1,。当然还有其他方法,但我觉得是非常不合理的,就不提出来了。而且uc2依赖了uc1里的控件就是非常不合理的设计,我觉得楼主应该想想是不是有更合理的做法嗯
啊?这样做不合理吗,那比如一个窗体,UC1是显示具体内容的自定义控件,UC2是一个工具箱,这样UC2不依赖UC1,应该怎么设计的?
x2640491663 2013-03-24
  • 打赏
  • 举报
回复
引用 3 楼 davinciyxw 的回复:
在这个Form的范围内,UC2是认识UC1的 那么只要UC1把textBox以public属性的方式,或者把自己全部public开,那么UC2就可以访问UC1.TextBox.Text了
谢谢,这个方法确实可行 不知道能否有更好的方法,而且我需要在UC2的后台代码中获取UC1中控件对象,虽然这样说好像确实有点不合理
showtime5156 2013-03-24
  • 打赏
  • 举报
回复
应该可以在uc2上获得form的对象引用,然后通过该对象获得uc1,。当然还有其他方法,但我觉得是非常不合理的,就不提出来了。而且uc2依赖了uc1里的控件就是非常不合理的设计,我觉得楼主应该想想是不是有更合理的做法嗯
  • 打赏
  • 举报
回复
在这个Form的范围内,UC2是认识UC1的 那么只要UC1把textBox以public属性的方式,或者把自己全部public开,那么UC2就可以访问UC1.TextBox.Text了
x2640491663 2013-03-24
  • 打赏
  • 举报
回复
引用 1 楼 wanghui0380 的回复:
不和陌生人说话 UC1 不认识UC2,所以他跟Uc2说不上话滴 所以自己想办法让他们两认识先
能否稍微明确点,理解不能,谢谢
wanghui0380 2013-03-24
  • 打赏
  • 举报
回复
不和陌生人说话 UC1 不认识UC2,所以他跟Uc2说不上话滴 所以自己想办法让他们两认识先

110,561

社区成员

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

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

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