前言
最近在开发一个小工具,需要读取当前窗体中所有控件的部分属性数据,经过一翻折腾和测试,最终成功了.
代码示范
using System;
using System.Windows.Forms;
namespace GongKongShanJian
{
public partial class MainForm : Form
{
public MainForm()
{
InitializeComponent();
}
/// <summary>
/// 历遍指定窗体类的所有控件
/// </summary>
/// <param name="AllControl">窗体类控件集合</param>
private void GetControlsInfo(Control AllControl)
{
foreach(Control con in AllControl.Controls)
{
//如果查找到的控件数量大于0,则说明是容器控件,需要将容器作为控件集合进行递归查找
if (con.Controls.Count > 0)
{
GetControlsInfo(con);//针对容器控 件递归查找 (自己调用自己)
}
//根据对应的控件类型进行相应的数据提取操作
if (con is TextBox)
{
string nameStr = ((TextBox)con).Name;
string textStr = ((TextBox)con).Text;
//里面写你要获取的属性
}
if(con is CheckBox)
{
string nameStr = con.Name; //因为每个控件都有Name属性,所以不需要 (CheckBox)con 强制转换类型
bool chkState = ((CheckBox)con).Checked;
}
}
}
private void ReadInfo_Click(object sender, EventArgs e)
{
GetControlsInfo(this); //调用查找控件方法
}
}
}
遇到问题了?
你是不是发现了无法获取容器类控件本身?
呵呵,简单啊.
你先提取控件属性,然后再进行判断历遍操作试试.