我正在使用来自vb.net power pack的winform datarepeater控件。
转发器上的所有项目都是只读的,但复选框列除外。
我想迭代这些项目并找出选中的复选框。
我无法在控件上找到datarepeateritems的集合,而且帮助很少。
感谢您的帮助。
答案 0 :(得分:2)
这是前一段时间被问到的,以防万一其他人正在寻找答案:
for (int i = 0; i < this.dataRepeater1.ItemCount; i++)
{
this.dataRepeater1.CurrentItemIndex = i;
CheckBox checkBox = (CheckBox)
this.dataRepeater1.CurrentItem.Controls["controlName"];
bool isChecked = checkBox.Checked;
}
这种方法可以更轻松地处理/读取同一转发器项目上的任何相关控件。
答案 1 :(得分:0)
为什么不检查datarepeater的数据源?
E.g。我有一个datarepeater绑定到人员Bindingsource 请参阅按钮处理程序
private void Form1_Load(object sender, EventArgs e)
{
List<Person> persons = new List<Person>();
persons.Add(new Person { Name = "Peter", IsLocal = true });
persons.Add(new Person { Name = "Sepp", IsLocal = false });
persons.Add(new Person { Name = "Franz", IsLocal = false });
personBindingSource.DataSource = persons;
}
private void buttonCountCheckBox_Click(object sender, EventArgs e)
{
int i = 0;
foreach (Person singlePerson in personBindingSource)
{
if (singlePerson.IsLocal)
{
i++;
}
}
Console.WriteLine("DEBUG: checked found: " + i);
}
答案 2 :(得分:0)
您可以遍历“控件”列表(从模板生成)
将datarepeater中的复选框重命名为“checkBoxUnbound”
使用以下代码
private void button3_Click(object sender, EventArgs e)
{
int i = 0;
CheckBox unboundCheckBox;
foreach (Control c in dataRepeater1.Controls)
{
unboundCheckBox = c.Controls["checkBoxUnbound"] as CheckBox;
if (unboundCheckBox != null && unboundCheckBox.Checked)
{
i++;
}
}
Console.WriteLine("DEBUG: checked found: " + i);
}