【发布时间】:2011-02-20 10:50:36
【问题描述】:
我正在使用 c# 中的 .NET CF 框架,我想知道我是否可以像这样访问控件:
string field="txtName";
this.Controls[field];
或者这是不可能的?
【问题讨论】:
标签: c# dynamic controls accessibility
我正在使用 c# 中的 .NET CF 框架,我想知道我是否可以像这样访问控件:
string field="txtName";
this.Controls[field];
或者这是不可能的?
【问题讨论】:
标签: c# dynamic controls accessibility
我认为您使用的方法是 FindControl - 您可以在任何带有 Controls 集合的东西上找到该方法。
【讨论】:
使用 Linq 怎么样?
var myControl = this.Controls.Cast<Control>().OfType<WhateverControlType>().FirstOrDefault(cont => cont.ID == "myControlId");
类似的东西?
【讨论】:
我不明白为什么会出错,索引器需要 string,而您传递的是 string,所以对我来说是正确的。
【讨论】:
FindControl 方法。 (我应该写“如果索引器期望...” :-)
可以通过名称(stirng)或索引(int)引用控件集合中的控件。您唯一需要做的就是将控件转换为对象类型。类似于以下内容。
MyControl c (MyControl)this.Controls["ControlName"];
享受吧!
【讨论】: