我创建了这个代码,用于获取winform中的所有组框,然后只获取具有确定名称的组框。
Control.ControlCollection controles = this.Controls;
GroupBox gBoxAux = new GroupBox();
List<GroupBox> gBoxes = new List<GroupBox>();
foreach (Control c in controles)
{
if (c.GetType() == typeof(GroupBox))
{
gBoxAux = (GroupBox)c;
gBoxes.Add(gBoxAux);
}
}
我不知道是否有更好的方法,而不是遍历所有控件。
非常感谢!
答案 0 :(得分:1)
很好地找到所有的groupbox,没有比迭代所有groupbox更好的方法了。但是(对我而言)代码看起来会更好:
List<GroupBox> gBoxes = this.Controls.OfType<GroupbBox>().ToList();
OfType<T>
选择该类型的所有元素。
请注意,这只会查找直接包含在此ControlCollection
中但不包含在子容器中的所有组框。您可能希望以递归方式收集组框:
public IEnumerable<GroupBoxes> GetAllGroupBoxes(Control c)
{
return c.Controls.OfType<GroupBox>()
.Concat(c.Controls.OfType<Control>().SelectMany(GetAllGroupBoxes));
}
List<GroupBox> gBoxes = GetAllGroupBoxes(this).ToList();
要过滤特定名称,您可以使用Where
:
Controls.OfType<GroupBox>().Where(gb => gb.Name == "whatever")...
答案 1 :(得分:1)
您可以使用Linq查询:
driver.find_element_by_id()