C# Winform 获取窗体上所有的控件包括容器里的控件,并读取控件参数

前言

最近在开发一个小工具,需要读取当前窗体中所有控件的部分属性数据,经过一翻折腾和测试,最终成功了.

代码示范

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);           //调用查找控件方法
        }
	}
}

遇到问题了?

你是不是发现了无法获取容器类控件本身?
呵呵,简单啊.
你先提取控件属性,然后再进行判断历遍操作试试.

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

工控闪剑

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值