我有一个表格,有很多动态生成的复选框。在运行时,我怎样才能遍历它们中的每一个,以便我可以获得它们的值和ID?如何遍历表单上的所有复选框?
回答
foreach(Control c in this.Controls)
{
if(c is CheckBox)
{
// Do stuff here ;]
}
}
如果控件嵌入其他控件内部,则不起作用。 “这个”并不是一切。 – Fandango68 2017-03-22 05:17:34
是的@费尔南多68你必须创造一个经历所有'孩子'的复发功能。 这是一个从近8年前的答案:D – 2017-04-07 12:36:08
是的,它不工作 – 2018-03-07 07:03:39
当它们被创建时,获取这些值的引用列表,然后您可以遍历该列表。
这样,也许(如果它在Windows Forms):
foreach(var checkBox in myForm.Controls.OfType<CheckBox>())
{
//Do something.
}
我一直在做这一段时间 - 只要我知道没有在容器中嵌套。您可能会提到,您的解决方案还允许将.Where(c => c.Checked)(或其他Linq表达式)附加到未知内容。 – Herb 2011-10-06 19:10:19
如果是Windows Forms,你可以尝试这样的事:
private void button1_Click(object sender, EventArgs e)
{
Dictionary<string, bool> checkBoxes = new Dictionary<string, bool>();
LoopControls(checkBoxes, this.Controls);
}
private void LoopControls(Dictionary<string, bool> checkBoxes, Control.ControlCollection controls)
{
foreach (Control control in controls)
{
if (control is CheckBox)
checkBoxes.Add(control.Name, ((CheckBox) control).Checked);
if (control.Controls.Count > 0)
LoopControls(checkBoxes, control.Controls);
}
}
记住,容器控件可以包含孩子,所以你可能也想检查一下。
我用一个简单的扩展方法,将任何控制类型的工作:
public static IEnumerable<T> AllControls<T>(this Control startingPoint) where T : Control
{
bool hit = startingPoint is T;
if (hit)
{
yield return startingPoint as T;
}
foreach (var child in startingPoint.Controls.Cast<Control>())
{
foreach (var item in AllControls<T>(child))
{
yield return item;
}
}
}
然后,你可以用它像这样:
var checkboxes = control.AllControls<CheckBox>();
使用的IEnumerable让您选择如何存储结果,还可以让你用linq:
var checkedBoxes = control.AllControls<CheckBox>().Where(c => c.Checked);
+1它们可以嵌套,好点,并且使用lambda总是加号) – 2009-11-24 10:54:39
这可能比Control.Controls更有用 – 2010-03-13 15:33:52
+1用于查找嵌套控件。这个答案是最好的。 – 2013-05-06 23:18:02
我知道这是旧的,但它很容易,因为我可以ima gine。
只需将所有复选框添加到List<Checkbox>
中,所有复选框状态都在列表中,即使它们在列表中的UI更改中也发生更改。
List<Checkbox> checkboxes = new List<Checkboxes>();
checkboxes.Add(chk1);
checkboxes.Add(chk2);
//So add all checkboxes you wanna iterate
foreach(Checkbox checkbox in checkboxes){
//Do something using checkbox object
}
希望这有助于:)
- 1. 如何遍历所有未选中的复选框?
- 2. 循环遍历表中的所有复选框
- 3. 遍历一组复选框
- 4. 遍历一个复选框列表
- 5. 遍历所有选中的复选框,并获得输入框的值在jquery
- 6. 如何在VB.net中遍历/遍历表单中的所有对象?
- 7. 遍历所有表单元素
- 8. 遍历所有表单字段
- 9. Django,遍历所有表单错误
- 10. 遍历行/复选框在radgrid控件
- 11. 循环遍历复选框PHP
- 12. JQuery - 如何遍历所有表单输入?
- 13. 在Windows窗体上循环遍历所有GroupBox表单
- 14. 遍历表中的选择框jQuery
- 15. 如何使用JQuery遍历枚举的Check List(复选框)?
- 16. 如何遍历树的所有节点?
- 17. 如何遍历UIImage的所有像素?
- 18. 如何遍历terraform中的所有aws_instances?
- 19. 访问VBA - 表单上的所有复选框已被检查
- 20. 表单上所有复选框的jQuery验证代码
- 21. 如何选择所有项目在选择所有菜单项时选择黑莓的列表框复选框
- 22. Django JQuery遍历所有选项
- 23. 当单击一个复选框时选中表格中的所有复选框
- 24. Python的 - 遍历所有类
- 25. 遍历所有SimpleTextBox的
- 26. 如何遍历所有Bundle对象
- 27. android - 如何遍历所有活动?
- 28. 如何遍历所有wx.CheckBox实例?
- 29. 如何循环遍历所有路线?
- 30. 获取并循环遍历jquery中的表中的所有选择框
你在谈论Windows窗体或ASP.NET? – 2009-11-24 07:47:07