zoukankan      html  css  js  c++  java
  • 反射设置当前窗体所有控件的Text

    在我们编程的时候,有时需要动态的获取当前窗体控件的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);
                                }
                            }
                        }
    具体设置代码
  • 相关阅读:
    PAT(乙级)1007
    PAT(乙级)1006
    PAT(乙级)1005
    PAT(乙级)1004
    C算法实现:将字符串中的数字返回为整型数
    PAT(乙级)1002
    PAT(乙级)1001
    NOI接水问题
    【BZOJ】【2756】【SCOI2012】奇怪的游戏
    【BZOJ】【2631】Tree
  • 原文地址:https://www.cnblogs.com/sczmzx/p/3605390.html
Copyright © 2011-2022 走看看