反射获取窗体所有控件的Text

可以直接通过反射获取当前窗体的所有控件的Text(具有Text属性),具体代码如下:

foreach (var field in form.GetType().GetFields(System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.Public))
            {
                string fieldValue = "";
                try
                {
                    PropertyInfo proText = field.FieldType.GetProperty("Text");
                    if (field.FieldType == typeof(System.Windows.Forms.Label) ||
                        field.FieldType == typeof(DevComponents.DotNetBar.LabelX)
                        )
                    {
                        fieldValue = proText.GetValue(field.GetValue(form), null).ToString();
                    }
                    else if (field.FieldType == typeof(System.Windows.Forms.Button) ||
                        field.FieldType == typeof(DevComponents.DotNetBar.ButtonX) ||
                        field.FieldType == typeof(GPOS.Controls.ButtonNew)
                        )
                    {
                        fieldValue = proText.GetValue(field.GetValue(form), null).ToString();
                    }
                    else if (field.FieldType == typeof(DevComponents.DotNetBar.ButtonItem) ||
                        //field.FieldType == typeof(DevComponents.DotNetBar.TextBoxItem) ||
                                field.FieldType == typeof(DevComponents.DotNetBar.LabelItem)
                        )
                    {
                        fieldValue = proText.GetValue(field.GetValue(form), null).ToString();
                    }
                    else if (field.FieldType == typeof(System.Windows.Forms.ToolStripMenuItem)
                        )
                    {
                        fieldValue = proText.GetValue(field.GetValue(form), null).ToString();
                    }
                    else if (field.FieldType == typeof(System.Windows.Forms.ToolStripButton)
                        )
                    {
                        // fieldValue = proText.GetValue(field.GetValue(form), null).ToString();
                        PropertyInfo proToolTipText = field.FieldType.GetProperty("ToolTipText");
                        fieldValue = proToolTipText.GetValue(field.GetValue(form), null).ToString();
                    }
                    else if (field.FieldType == typeof(System.Windows.Forms.CheckBox) ||
                         field.FieldType == typeof(DevComponents.DotNetBar.Controls.CheckBoxX)
                        )
                    {
                        fieldValue = proText.GetValue(field.GetValue(form), null).ToString();
                    }
                    else if (field.FieldType == typeof(System.Windows.Forms.DataGridViewTextBoxColumn) ||
                         field.FieldType == typeof(System.Windows.Forms.DataGridViewCheckBoxColumn)
                        )
                    {
                        PropertyInfo proHeaderText = field.FieldType.GetProperty("HeaderText");
                        fieldValue = proHeaderText.GetValue(field.GetValue(form), null).ToString();
                    }
                    else
                    {
                        continue;
                    }
                }
                catch
                { }
            }
代码
原文地址:https://www.cnblogs.com/sczmzx/p/3605349.html