c#的winform,怎么根据控件的名字获取控件属性!

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c#的winform,怎么根据控件的名字获取控件属性!相关的知识,希望对你有一定的参考价值。

例如,知道控件的名称是“Button1”
怎么获取Button1.click
谢谢高手指点,网上查的一些资料都没试验成功,都提示:未将对象实例化

1、使用C# 窗体中自带的方法public Control[] Find(string key, bool searchAllChildren)。

2、自己写个foreach 循环方法 foreach (Control control in this.Controls)。

3、直接父级查找子控件this.Controls[key];如果是嵌套的子控件,则需在自己写个递归方法方法获取。

4、最后运行,根据自己的实际需要选择查找方式。


注意事项:

C#使得C++程序员可以高效的开发程序,且因可调用由 C/C++ 编写的本机原生函数,而绝不损失C/C++原有的强大的功能。因为这种继承关系,C#与C/C++具有极大的相似性,熟悉类似语言的开发者可以很快的转向C#。

参考技术A Control control = Controls.Find("button1", true)[0];
//object o = control.GetType().GetProperty("PropertyName").GetValue(control, null);
System.Reflection.EventInfo ev = control.GetType().GetEvent("Click");
你这是要获取事件吧,第二行是获取属性,第三行是获取事件
参考技术B 单击你需要的控件或者右键你的控件选择属性,然后在右下角属性中找到事件,在事件中选择你需要的,双击空白处编写。系统会自己在设计器中添加对于该事件的引用。 参考技术C /*[控件名称]:button1*/
Control control = Controls.Find("button1", true)[0];
/*[控件属性]:PropertyName */
object o = control.GetType().GetProperty("PropertyName").GetValue(control, null);
/*[控件事件]:Click */
System.Reflection.EventInfo ev = control.GetType().GetEvent("Click");
参考技术D 我也是来问这个问题的,看了有些人的评论不得不说一句,你要是会就把问题给人说清楚讲明白解决掉,要是不想说就不要给人留言回复。

c#的winform怎么根据控件的名字获取控件属性?

这首先要看控件所在的Form类有没有实例化,若已经实例化,可以通过构造传参或委托的方式完成。

构造传参:将控件所在的Form类实例化对象作为参数传到你new的新Form中。

C#实现根据指定容器和控件名字获得控件的方法,在进行C#应用程序设计时有一定的借鉴价值。分享给大家供大家参考借鉴。具体实现方法如下:

功能代码如下:

1、/// <summary>

2、/// 根据指定容器和控件名字,获得控件

3、/// </summary>

4、/// <param name="obj">容器</param>

5、/// <param name="strControlName">控件名字</param>

6、/// <returns>控件</returns>

7、private object GetControlInstance(object obj,string strControlName)

8、

9、IEnumerator Controls = null;//所有控件

10、Control c = null;//当前控件

11、Object cResult=null;//查找结果

12、if(obj.GetType() == this.GetType())//窗体

13、

14、Controls = this.Controls.GetEnumerator();

15、

16、else//控件

17、

18、Controls = ((Control)obj).Controls.GetEnumerator();

19、

20、while(Controls.MoveNext())//遍历操作

21、

22、c = (Control)Controls.Current;//当前控件

23、if(c.HasChildren)//当前控件是个容器

24、

25、cResult = GetControlInstance(c,strControlName);//递归查找

26、if(cResult==null)//当前容器中没有,跳出,继续查找

27、continue;

28、else//找到控件,返回

29、return cResult;

30

31、else if(c.Name == strControlName)//不是容器,同时找到控件,返回

32、

33、return c;

34、

35、

36、return null;//控件不存在

37、

示例如下:

((Button) GetControlInstance(this,"button7")).BackColor = Color.Red;

((Button) GetControlInstance(this.groupBox4,"button7")).PerformClick();

C#是微软公司发布的一种面向对象的、运行于.NET Framework之上的高级程序设计语言。并定于在微软职业开发者论坛(PDC)上登台亮相。C#是微软公司研究员Anders Hejlsberg的最新成果。C#看起来与Java有着惊人的相似;它包括了诸如单一继承、接口、与Java几乎同样的语法和编译成中间代码再运行的过程。但是C#与Java有着明显的不同,它借鉴了Delphi的一个特点,与COM(组件对象模型)是直接集成的,而且它是微软公司 .NET windows网络框架的主角。

C#是一种安全的、稳定的、简单的、优雅的,由C和C++衍生出来的面向对象的编程语言。它在继承C和C++强大功能的同时去掉了一些它们的复杂特性(例如没有宏以及不允许多重继承)。C#综合了VB简单的可视化操作和C++的高运行效率,以其强大的操作能力、优雅的语法风格、创新的语言特性和便捷的面向组件编程的支持成为.NET开发的首选语言。

C#是面向对象的编程语言。它使得程序员可以快速地编写各种基于MICROSOFT .NET平台的应用程序,MICROSOFT .NET提供了一系列的工具和服务来最大程度地开发利用计算与通讯领域。

C#使得C++程序员可以高效的开发程序,且因可调用由 C/C++ 编写的本机原生函数,因此绝不损失C/C++原有的强大的功能。因为这种继承关系,C#与C/C++具有极大的相似性,熟悉类似语言的开发者可以很快的转向C#。

参考技术A 单击你需要的控件或者右键你的控件选择属性,然后在右下角属性中找到事件,在事件中选择你需要的,双击空白处编写。系统会自己在设计器中添加对于该事件的引用。

以上是关于c#的winform,怎么根据控件的名字获取控件属性!的主要内容,如果未能解决你的问题,请参考以下文章

C# winform中怎么获取imagelist控件中图片的名字

c# winform 怎么获取控件

C#的winform中怎么根据函数找到对应的控件?

c# winform如何取得一个区域的所有控件对象

c# winform 控件层次问题

C# winform 由id获取该控件!