C#中,遍歷窗體上的控件,並顯示在ListBox1中:
private void button1_Click(object sender, EventArgs e)
{
listBox1.Items.Clear();
GetControl(this.Controls);
}
private void GetControl(Control.ControlCollection ctc)
{
foreach (Control ct in ctc)
{
//調用AddControlInofToListBox方法獲取控件信息
AddControlInofToListBox(ct);
//C#只遍歷窗體的子控件,不遍歷孫控件
//當窗體上的控件有子控件時,需要用遞歸的方法遍歷,才能全部列出窗體上的控件
if (ct.HasChildren)
{
GetControl(ct.Controls);
}
}
}
private void AddControlInofToListBox(Control ct)
{
switch (ct.GetType().Name)
{
//如果是ListBox、CheckBox、Button
case "ListBox":
case "GroupBox":
case "Button":
listBox1.Items.Add("控件名:" + ct.Name);
break;
//如果是CheckBox
case "CheckBox":
if (((CheckBox)ct).Checked)
{
listBox1.Items.Add("控件名:" + ct.Name + ",是否選中:是");
//((CheckBox)ct).Checked = false;
}
else
{
listBox1.Items.Add("控件名:" + ct.Name + ",是否選中:否");
//((CheckBox)ct).Checked = true;
}
break;
//如果是RadioButton
case "RadioButton":
RadioButton rdb = (RadioButton)ct;
if (rdb.Checked)
{
listBox1.Items.Add("控件名:" + ct.Name + ",是否選中:是");
//rdb.Checked = false;
}
else
{
listBox1.Items.Add("控件名:" + ct.Name + ",是否選中:否");
//rdb.Checked = true;
}
break;
//其它值
default:
listBox1.Items.Add("控件名:" + ct.Name + ",值:" + ct.Text);
break;
}
}
//遍歷groupBox1控件的子控件
private void button2_Click(object sender, EventArgs e)
{
listBox1.Items.Clear();
//可以共用上面的,遍歷窗體控件的方法
//只是參數由Controls改爲groupBox1.Controls
GetControl(groupBox1.Controls);
}