博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
反射设置当前窗体所有控件的Text
阅读量:5143 次
发布时间:2019-06-13

本文共 4220 字,大约阅读时间需要 14 分钟。

在我们编程的时候,有时需要动态的获取当前窗体控件的Text,但是又不能一个一个控件的设置,这个时候可以通过反射来动态设置。

第一步:先建立一个类来保存控件的Text信息。

public class ControlInfo    {        private string name;        private string text;        public string Name        {            get            {                return name;            }            set            {                name = value;            }        }        public string Text        {            get            {                return text;            }            set            {                text = value;            }        }    }
控件信息类

第二步:建立一个存储这些控件的变量。

public List<ControlInfo> LstControlInfo;

第三步:从外部获取控件信息存储到LstControlInfo中。

第四步:通过发射将LstControlInfo里的控件Text设置到form中。

以下是保存的具体代码:

foreach (var field in form.GetType().GetFields(System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.Public))                    {                        if (LstControlInfo.Exists(m => m.Name == field.Name))                        {                            ControlInfo control = LstControlInfo.Find(m => m.Name == field.Name);                            PropertyInfo proText = field.FieldType.GetProperty("Text");                            if (field.FieldType == typeof(System.Windows.Forms.Label) ||                                field.FieldType == typeof(DevComponents.DotNetBar.LabelX)                                )                            {                                proText.SetValue(field.GetValue(form), control.Text, null);                            }                            else if (field.FieldType == typeof(System.Windows.Forms.Button) ||                                field.FieldType == typeof(DevComponents.DotNetBar.ButtonX) ||                                field.FieldType == typeof(GPOS.Controls.ButtonNew)                                )                            {                                proText.SetValue(field.GetValue(form), control.Text, null);                            }                            else if (field.FieldType == typeof(DevComponents.DotNetBar.ButtonItem) ||                                //field.FieldType == typeof(DevComponents.DotNetBar.TextBoxItem) ||                                field.FieldType == typeof(DevComponents.DotNetBar.LabelItem)                                )                            {                                proText.SetValue(field.GetValue(form), control.Text, null);                            }                            else if (field.FieldType == typeof(System.Windows.Forms.ToolStripMenuItem)                                )                            {                                proText.SetValue(field.GetValue(form), control.Text, null);                            }                            else if (field.FieldType == typeof(System.Windows.Forms.ToolStripButton)                                )                            {                                proText.SetValue(field.GetValue(form), control.Text, null);                                PropertyInfo proToolTipText = field.FieldType.GetProperty("ToolTipText");                                proToolTipText.SetValue(field.GetValue(form), control.Text, null);                            }                            else if (field.FieldType == typeof(System.Windows.Forms.CheckBox) ||                                 field.FieldType == typeof(DevComponents.DotNetBar.Controls.CheckBoxX)                                )                            {                                proText.SetValue(field.GetValue(form), control.Text, null);                            }                            else if (field.FieldType == typeof(System.Windows.Forms.DataGridViewTextBoxColumn) ||                                 field.FieldType == typeof(System.Windows.Forms.DataGridViewCheckBoxColumn)                                )                            {                                PropertyInfo proHeaderText = field.FieldType.GetProperty("HeaderText");                                proHeaderText.SetValue(field.GetValue(form), control.Text, null);                            }                        }                    }
具体设置代码

 

转载于:https://www.cnblogs.com/sczmzx/p/3605390.html

你可能感兴趣的文章
Streaming的receiver模式
查看>>
[转载]一个人的失败,99%失败于“脾气”
查看>>
【Nowcoder】玩游戏
查看>>
过滤器(Filter)
查看>>
字符串的操作
查看>>
性能优化之Java(Android)代码优化
查看>>
springMVC相关—文件上传
查看>>
由Oracle 11g SYSAUX 和 SYSTEM 表空间回收引发的联想
查看>>
uva 1416 Warfare And Logistics
查看>>
欲则不达
查看>>
盒子游戏
查看>>
OpenJudgeP1.10.08:病人排队__(刷题)_水题
查看>>
观察者模式
查看>>
Hadoop分布式文件系统中架构和设计要点汇总
查看>>
cout和printf
查看>>
UVa 10088 - Trees on My Island (pick定理)
查看>>
#C++PrimerPlus# Chapter11_Exersice4_mytimeV4
查看>>
iOS8 针对开发者所拥有的新特性汇总如下
查看>>
Jmeter + Grafana搭建实时监控可视化
查看>>
uCGUI字符串显示过程分析和uCGUI字库的组建
查看>>