新手再求助、关于获取对象

淡默 2011-10-14 02:43:11
与技术无关的话留到一楼说、直接说问题
自定义了一个控件、是:UserControl的
这个控件内、自己添加了一个可以理解为ID的属性、还添加了一个bool型的属性用来表示开关
在Form中、需要动态添加这个控件、为了方便理解、比如说需要动态添加5个、Add的时候设置ID分别为1、2、3、4、5
开关都为false(关)、开关在自定义控件类中click事件
这5个开关、最多可以打开一个、也就是说、比如单击1、1打开了、然后点击3、3打开、这时候1就要自动关闭
以前提过这个问题、是获取不到上一个操作的ID、我在自定义控件类中建了一个static int的变量、解决了这个问题
但是现在新问题来了、以上边的例子、我点了3以后、我可以得到上一个操作的是1、但是我怎么凭借这个1、得到ID为1的这个自定义控件的对象呢?得不到1的对象、就无法去关闭1、因为现在操作的是3、1的ID得到了、1的对象没了
因为是自动生成的、所以不运行的时候根本没这个控件的实例、一直想不通这个问题
...全文
96 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
happy20101027 2011-10-14
  • 打赏
  • 举报
回复
同意楼上的。UserControl作为object 放到字典里。然后就可以通过操作指定索引的字典对象去操作这个UserControl了
淡默 2011-10-14
  • 打赏
  • 举报
回复
多谢4楼5楼
我去试试Dictionary、怕有什么不懂的问题、待会结贴、稍等
kakaniuren 2011-10-14
  • 打赏
  • 举报
回复
把UserControl放到字典中,需要操作时,从字典中取出操作.
又或者遍历所有的UserControl全部重新设置为False,被点击的设为True,当然这么做,有点恶劣..
classbob 2011-10-14
  • 打赏
  • 举报
回复
解决的办法很多,最原始的模型是你维护一个当前打开的ID,同时维护一个ID与其代表控件的映射关系,比如Dictionary<int, UserControl>、List<UserControl>遍历找ID,等等
淡默 2011-10-14
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 mabaolin 的回复:]

UserControl uc = this.Controls[id] as UserControl;// UserControl代替你的名称
[/Quote]
额、这个我也想过、这段代码是在form中写的、因为我的自定义控件是动态添加的、也就是说原本form上是没有的、添加的代码在formLoad中、所以不运行是没有这个对象的、所以this.Controls[id]是不可以的
mabaolin 2011-10-14
  • 打赏
  • 举报
回复
UserControl uc = this.Controls[id] as UserControl;// UserControl代替你的名称
淡默 2011-10-14
  • 打赏
  • 举报
回复
发了几次帖子、这里的人都很热情很真诚、在这里先谢谢大家了、很喜欢这种气氛、遇到懂得的问题也情不自禁的去和别人讨论
分不够可以再加、希望知道解决办法的大牛不吝赐教

110,538

社区成员

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

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

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