CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  C#

类型转换难题,怎样根据控件类型名称转换到对应的控件

楼主shine888(fuzhong)2005-03-04 08:48:42 在 .NET技术 / C# 提问

在界面上有多种控件,在循环中怎么样根据控件名称来实现类型转换。  
  foreach(Control   ct   in   this.Controls)  
  {  
      怎样根据ct.GetType().Name来实现  
      uTextBox   textbox   =   (uTextBox)   ct;  
  }  
  现在是用switch根据来一个一个的转换写法太麻烦了,有没有办法根据控件类型名称利用反射技术进行转换呢?  
  问题点数:100、回复次数:25Top

1 楼tangyong12(海洋之星)回复于 2005-03-04 08:50:12 得分 5

关注,我也想知道.Top

2 楼jcchou(湘霸佬)回复于 2005-03-04 08:52:48 得分 0

jfTop

3 楼ccat(智拙)回复于 2005-03-04 08:53:13 得分 5

你的心情我理解,不过这个问题,是错的。Top

4 楼zr1982930(皮卡丘)回复于 2005-03-04 08:55:23 得分 0

关注ing!Top

5 楼shine888(fuzhong)回复于 2005-03-04 08:57:41 得分 0

事件都可以动态创建,难道这个类型转换就不能实现吗?Top

6 楼nga96(因为我笨,所以努力。陈勇华)回复于 2005-03-04 09:00:31 得分 0

UPTop

7 楼sutalon(神州无敌)回复于 2005-03-04 09:01:16 得分 0

你的问题问题很有意思,不过是不可能实现的Top

8 楼JasonHeung(拥有一切不过就这样笑着哭)回复于 2005-03-04 09:03:01 得分 0

你从控件数组里获得的就是控件本身,不需要转换。Top

9 楼shine888(fuzhong)回复于 2005-03-04 09:08:31 得分 0

程序员最怕就是做重复的事情,假如我自定义了几十个控件,那么再增加一个控件时就得修改代码,如果代码重用性不好的话那就更惨。  
  真的就没有办法解决?Top

10 楼donglidanche()回复于 2005-03-04 09:09:43 得分 0

自己写个处理函数吧Top

11 楼amendajing(学习,是个漫长的旅途!)回复于 2005-03-04 09:20:24 得分 0

markTop

12 楼xinminhuibaobao(砖头)回复于 2005-03-04 09:24:40 得分 0

你类型转换的目的是?Top

13 楼xinminhuibaobao(砖头)回复于 2005-03-04 09:26:37 得分 5

foreach(Control   ct   in   this.Controls)  
  {  
      Object   textbox   =   (Type(ct))   ct;//这样行么?  
  }  
  Top

14 楼xinminhuibaobao(砖头)回复于 2005-03-04 09:28:19 得分 0

upTop

15 楼shine888(fuzhong)回复于 2005-03-04 09:54:14 得分 0

那有没有办法根据控件的属性名称取到当前控件的属性值呢?Top

16 楼zhzuo(秋枫)回复于 2005-03-04 10:04:53 得分 50

http://www.c-sharpcenter.com/CSNET/dynamicinvoke.asp  
  http://www.c-sharpcorner.com/Code/2002/April/LoadingAssemblyInfo.asp  
   
   
  使用反射生成一个窗体:  
  private   void   button1_Click(object   sender,   System.EventArgs   e)  
  {  
  Assembly   assm   =   Assembly.LoadFrom("e:\\WindowsApplication5.dll");  
  Type   TypeToLoad=   assm.GetType("WindowsApplication5.Form1");  
   
  object   obj;  
  obj   =   Activator.CreateInstance(TypeToLoad);  
  Form   formToShow   =   null;  
  formToShow   =   (Form)obj;  
  formToShow.Show();  
   
  }  
  Top

17 楼sutalon(神州无敌)回复于 2005-03-04 11:23:13 得分 0

那有没有办法根据控件的属性名称取到当前控件的属性值呢?   >--  
   
   
  你的这个问题我不能解决阿Top

18 楼hatita(悠远的风景)回复于 2005-03-04 17:51:20 得分 0

foreach(Control   ct   in   this.Controls)  
  {  
      if(ct   is   uTextBox)  
      uTextBox   textbox   =   (uTextBox)   ct;  
  }  
  Top

19 楼ccat(智拙)回复于 2005-03-04 17:53:40 得分 0

那有没有办法根据控件的属性名称取到当前控件的属性值呢?  
   
  这个简单,可以通过反射得到,推荐你读一下《Microsoft   .NET   框架程序设计》Top

20 楼pgfun(木)回复于 2005-03-05 01:03:52 得分 0

ccat(智拙)   :你的心情我理解,不过这个问题,是错的。  
  --------  
  赫赫,没错,这个问题确实是错的。  
   
  Top

21 楼wjcking()回复于 2005-03-05 11:45:44 得分 0

foreach(Control   ct   in   this.Controls)  
  {  
      if(ct   is   uTextBox)  
      uTextBox   textbox   =   (uTextBox)   ct;  
  }Top

22 楼Ivony(授人以鱼不如授人以渔,上海谋生)回复于 2005-03-05 12:07:22 得分 0

是可以通过反射来得到,但这样做是错误的。。。。Top

23 楼shine888(fuzhong)回复于 2005-03-05 14:29:51 得分 0

sControl.GetType().GetProperty("ColumnName").GetValue()   方法怎么取不到属性值啊,老是说错,但看帮助文档GetValue方法是用来取属性值的啊?  
  Top

24 楼sutalon(神州无敌)回复于 2005-03-05 15:51:08 得分 35

shine888(fuzhong),对你的问题:  
  sControl.GetType().GetProperty("ColumnName").GetValue()   方法怎么取不到属性值啊,老是说错,但看帮助文档GetValue方法是用来取属性值的啊?〉---  
   
  是因为你的GetValue()   方法写的有问题,此方法中的参数你没有写,你可以参考一下我写的一个测试  
  程序,经测试是对的,如:  
   
  static   void   Main(string[]   args)           //测试程序  
  {  
        AB   ab=   new   AB("sjh");  
   
                          //打引出的结果为“sjh”,测试正确  
                          Console.WriteLine(ab.GetType().GetProperty("Name").GetValue(ab,null));  
        Console.Read();  
   
  }  
  class   AB  
  {  
  string   name;  
  public   string   Name  
  {  
  set{this.name   =   value;}  
  get{return   this.name;}  
  }  
  public   AB(string   name)  
  {  
  this.name   =   name;  
  }  
  }  
  Top

25 楼cym40011(萧雨)回复于 2005-03-05 16:24:03 得分 0

可以,我就写过这样的代码  
  如下:是Web     即*.aspx.cs   文件  
  //this.Controls[1].Controls   你调试一下就可以看到TextBox控件了  
  foreach(Control   ct   in   this.Controls[1].Controls)  
  {  
          TextBox   objtextbox   =   (TextBox)   ct;  
          if(objtextbox.FullName=="System.Web.UI.WebControls.Text"  
          {  
                    //你的处理函数  
            }  
  }  
  Top

相关问题

  • 使用MEMO控件的编码转换的难题。(在线等)
  • 在做ACTIVEX控件时 如何转换类型阿?
  • 求ASP.NET控件设计时System.Web.UI.WebControls.FontInfo类型的转换器
  • 如何将字符串转换成控件类型
  • 类型转换!
  • 类型转换???
  • 类型转换????
  • 类型转换????
  • 转换类型
  • 类型转换?

关键词

  • 控件
  • 属性
  • 转换
  • 代码
  • utextbox
  • ct
  • 属性值
  • 类型
  • formtoshow
  • 名称

得分解答快速导航

  • 帖主:shine888
  • tangyong12
  • ccat
  • xinminhuibaobao
  • zhzuo
  • sutalon

相关链接

  • CSDN .NET频道
  • .NET类图书
  • C#类图书
  • .NET类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo