Вот пример кода на C#, вы можете легко разработать код VB из него.
private int mTotal;
private int mChecked;
private void EnumerateCheckBoxes(Control control)
{
if (control is CheckBox)
{
mTotal++;
mChecked += ((CheckBox)control).Checked ? 1 : 0;
}
else if (control.HasControls())
{
foreach(var c in control.Controls)
{
EnumerateCheckBoxes(c);
}
}
}
protected void Page_Load(Object sender, EventArgs e)
{
mTotal = 0;
mChecked = 0;
EnumerateCheckBoxes(this.Form);
textbox1.Text = mTotal.ToString();
textbox2.Text = mChecked.ToString();
textbox3.Text = (mTotal - mChecked).ToString();
}
Несколько вещей, чтобы рассмотреть следующие вопросы:
- Этот код будет считать радиокнопки, а также потому, что он получает в наследство от CheckBox. Если этого избежать, замените
if (control is CheckBox)
на if (control.GetType() == typeof(CheckBox))
- Если вы хотите рассмотреть флажки из CheckBoxList, тогда вам нужно написать еще одно условие, чтобы проверить, является ли элемент управления CheckBoxList, а затем в рамках условия, перечислять элементы, содержащие checkboxlist. Элементы подсчитываются для общего подсчета, пока выбранные элементы будут добавлены к проверенному счету.
Ударьте меня. Я попробовал свою руку на фактическом ответе VB и получил путь от языка. Я также отвлекся, пытаясь выбрать все элементы управления CheckBox с помощью LINQ. :-) – ProfK 2010-12-09 04:55:59