我有一個表格,有很多動態生成的複選框。在運行時,我怎樣才能遍歷它們中的每一個,以便我可以獲得它們的值和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. 的jQuery遍歷複選框
- 5. 遍歷一組複選框
- 6. 遍歷一個複選框列表
- 7. 遍歷所有選中的複選框,並獲得輸入框的值在jquery
- 8. 如何在VB.net中遍歷/遍歷表單中的所有對象?
- 9. Django,遍歷所有表單錯誤
- 10. 遍歷所有表單元素
- 11. 遍歷所有表單字段
- 12. 遍歷所有工作表
- 13. 如何循環遍歷表單中的所有元素jQuery
- 14. 如何'檢查'列表中的所有複選框'檢查'單個複選框?
- 15. 循環遍歷複選框PHP
- 16. 遍歷行/複選框在radgrid控件
- 17. jQuery的 - 遍歷所有選中的單選按鈕
- 18. JQuery - 如何遍歷所有表單輸入?
- 19. 在Windows窗體上循環遍歷所有GroupBox表單
- 20. 如何提交表單中的所有複選框字段?
- 21. 遍歷表中的選擇框jQuery
- 22. 如何使用JQuery遍歷枚舉的Check List(複選框)?
- 23. 如何遍歷UIImage的所有像素?
- 24. 如何遍歷列中的所有行
- 25. 如何遍歷樹的所有節點?
- 26. 如何遍歷terraform中的所有aws_instances?
- 27. 帶有複選框的jsTree,如何禁用所有複選框?
- 28. 訪問VBA - 表單上的所有複選框已被檢查
- 29. 表單上所有複選框的jQuery驗證代碼
- 30. 選擇沒有ID的表並遍歷所有的href
你在談論Windows窗體或ASP.NET? – 2009-11-24 07:47:07