我有一个更改标题的表单取决于用户选择。然后我想为控件创建一个属性,无论是radiobutton还是checkbox。它们具有相同的属性但我无法很好地实现。
private void DeleteEdit()
{
Control[] EmployeesControl; //I think this is the problem, but i cant figure it out.
if (Form_AddEmployee.Text.Contains("Edit"))
{
EmployeesControl = new RadioButton[numberOfEmployees];
}
else if (Form_AddEmployee.Text.Contains("Delete"))
{
EmployeesControl = new CheckBox[numberOfEmployees];
}
for (int i = 0; i < EmployeesControl.Count(); i++)
{
EmployeesControl[i] = new EmployeesControl();
InitializeControls(EmployeesControl[i]);
EmployeesControl[i].Visible = true;
panelEmployee.Controls.Add(EmployeesControl[i]);
EmployeesControl[i].Text = stringTemp;
EmployeesControl[i].Location = new Point(100, 100 * (i+1));
EmployeesControl[i].Font = MyFont;
EmployeesControl[i].CheckedChanged += EmployeesDeleteEditEmployees_CheckedChanged;
}
}
如果某个控件是单选按钮或复选框,我该如何创建变量。
答案 0 :(得分:2)
在您将GetType
更改为CheckBox或RadioButton后,您可以使用EmployeesControl[i]
进行检查。
private void DeleteEdit()
{
Control[] EmployeesControl; //I think this is the problem, but i cant figure it out.
if (Form_AddEmployee.Text.Contains("Edit"))
{
EmployeesControl = new RadioButton[numberOfEmployees];
for (int i = 0; i < EmployeesControl.Count(); i++)
{
EmployeesControl[i] = new RadioButton();
}
}
else if (Form_AddEmployee.Text.Contains("Delete"))
{
EmployeesControl = new CheckBox[numberOfEmployees];
for (int i = 0; i < EmployeesControl.Count(); i++)
{
EmployeesControl[i] = new CheckBox();
}
}
ButtonBase b;
CheckBox chk;
RadioButton rdo;
for (int i = 0; i < EmployeesControl.Count(); i++)
{
b = (ButtonBase)EmployeesControl[i];//You use b to set property
if (EmployeesControl[i].GetType() == typeof(RadioButton))
{
rdo = (RadioButton)EmployeesControl[i];
//Your code
//................
rdo.CheckedChanged += EmployeesDeleteEditEmployees_CheckedChanged;
}
else
{
chk = (RadioButton)EmployeesControl[i];
//Your code
//...............
chk.CheckedChanged += EmployeesDeleteEditEmployees_CheckedChanged;
}
//EmployeesControl[i] = new EmployeesControl();
//InitializeControls(EmployeesControl[i]);
//EmployeesControl[i].Visible = true;
//panelEmployee.Controls.Add(EmployeesControl[i]);
//EmployeesControl[i].Text = stringTemp;
//EmployeesControl[i].Location = new Point(100, 100 * (i + 1));
//EmployeesControl[i].Font = MyFont;
//EmployeesControl[i].CheckedChanged += EmployeesDeleteEditEmployees_CheckedChanged;
}
}
我希望它会对你有所帮助。
答案 1 :(得分:0)
您可以将ButtonBase类用于您的perpouse。
通过ButtonBase声明控件数组,因此您可以使用CheckBox和RadioButton的常用属性而无需强制转换。
您可以通过
访问的CheckBox或RadioButton的属性var a = EmployeesControl[i] as CheckBox;
if (a != null)
{
//this is checkbox
continue;
}
var b = EmployeesControl[i] as RadioButton;
if (b != null)
{
//this is RadioButton
}