所以这是一个愚蠢的问题.我已经在我编写的应用程序中的选项对话框中添加了一堆文本框.它们被命名为textbox1 - textbox12.有没有办法以编程方式访问名称?我只想在for循环中迭代它们.现在我正在单独访问每个人(不寒而栗!).我知道这是错误的方式.什么是正确的方法?什么是简单的方法?
谢谢
foreach (Control c in this.Controls)
{
if (c is TextBox)
{
// your logic here
}
}
Run Code Online (Sandbox Code Playgroud)
如果它们具有不同的功能,那么您可能需要更多检查,而不仅仅是确定它们是正确的类型.当然,这假设您已导入System.Windows.Forms命名空间.
Controls集合允许您按名称访问项目,因此您可以这样做:
var textboxes = Enumerable.Range(1, 12).Select(i => String.Format("textbox{0}", i)).Select(name => (TextBox)this.Controls[name]);
Run Code Online (Sandbox Code Playgroud)
这将避免必须枚举集合中的每个控件,虽然它很脆弱,因为它取决于使用的命名约定.
或者,您可以使用OfType查询方法:
var textboxes = this.Controls.OfType<TextBox>();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5951 次 |
| 最近记录: |