自定义一个UserControl,在其他窗体实例化一个UserControl,这个UserControl上面有一个Button
我在调用这个UserControl的窗体上写,这个Button的单击事件,在这个事件里面怎么得到我实例化的这个UserControl?
循环form控件,再循环其包含控件,接着递归获取其子控件……
public static void ClearCtrlValue(Control parContainer)
{
for (int index = 0; index < parContainer.Controls.Count; index++)
{
// 如果是容器类控件,递归调用自己
if (parContainer.Controls[index].HasChildren)
{
ClearCtrlValue(parContainer.Controls[index]);
}
else
{
switch (parContainer.Controls[index].GetType().Name)
{
case "TextBox":
parContainer.Controls[index].Text = "";
break;
case "RadioButton":
((RadioButton)(parContainer.Controls[index])).Checked = false;
break;
case "CheckBox":
((CheckBox)(parContainer.Controls[index])).Checked = false;
break;
case "ComboBox":
try
{
((ComboBox)(parContainer.Controls[index])).SelectedIndex = 0;
}
catch
{
}
break;
case "DateTimePicker":
((DateTimePicker)(parContainer.Controls[index])).Text = "1900-1-1";
break;
case "DataGridView":
DataTable dt = (DataTable)(((DataGridView)(parContainer.Controls[index])).DataSource);
if (dt.Rows.Count > 0)
{
dt.Clear();
((DataGridView)(parContainer.Controls[index])).DataSource = dt;
}
break;
case "CheckBoxComboBox":
parContainer.Controls[index].Text = "";
foreach (CheckBoxComboBoxItem Item in ((CheckBoxComboBox)(parContainer.Controls[index]))._CheckBoxComboBoxListControl.Items)
{
Item.Checked = false;
}
break;
}
}
}
}
这个是清空页面上所有控件的值的函数,所有控件都能找到,那就不在乎你的父控件的问题了