c#如何从controls中取出控件
参考下列C# 代码:递归获取panel1上的所有控件
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;namespace WindowsFormsApplication2
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
Queue<Control> query = new Queue<Control>();//临时存储获取到的control控件
/// <summary>
/// 递归获取panel1上的所有控件,并临时存储到一个队列中
/// </summary>
/// <param name="item"></param>
void DS(Control item)
{
for (int i = 0; i < item.Controls.Count;i++ )
{
if (item.Controls[i].HasChildren)
{
DS(item.Controls[i]);
}
else
{
query.Enqueue(item.Controls[i]);
}}
}
private void button1_Click(object sender, EventArgs e)
{
DS(panel1);
//删除遍历到的控件
while (query.Count != 0)
{
query.Dequeue().Dispose();
}
}
}
}
超级简单
控件名.Controls.Add(button);
我说的是取出来,不是加进去,比如说button[0] = 这里怎么把页面上的按钮从Controls集合中取出来,赋值给button[0]
foreach (Control item in this.Controls)
{
if (item is Button)
{
Button button = item as Button;
}
}
加注释
foreach (Control item in this.Controls) //this.Controls: 当前页面的所有控件
{
if (item is Button) //判断是否为button类型
{
Button button = item as Button; //换成button类型
//to do
}
}
foreach(Button btn in list)
{
btn.click += new EventHandler(btn_Click);
}
void btn_Click(object sender, EventArgs e)
{
Button btn = sender as Button;
btn就是你点击的按钮
}
代码看不懂,加注释啊