在C#中是否有一种方法可以通过使用字符串变量的值来引用控件,在我的情况下是TextBox?我正在使用下面的代码制作一个多个控件可用于'LostFocus'事件的方法。然后sender
TextBox需要根据其他TextBox的内容计算结果。问题是大约有12行TextBox,虽然这段代码可以重用事件方法,但我想不出一种方法可以引用不 {{1 }}。所有的框都有相似的名字(ex-miCellSaturation,miCellRecords,orSaturation,或Records),所以我的想法是,如果我可以用sender
命令隔离部分TextBox名称,然后将其与另一个字符串连接到形成完整的TextBox名称,这将起作用。我可以做到这一切,但我不知道如何使用连接字符串来引用该框。这是否需要遍历所有框,直到它匹配正确的名称?
Substring
答案 0 :(得分:2)
不确定是否正确理解了您的问题,但是如果您需要找到对名称以预定义字符串结尾的特定控件类型的引用,那么您可以使用
var list = YourForm.Controls.OfType<TextBox>()
.Where(x => x.Name.EndsWith("YourString"));
foreach(TextBox t in list)
{
Console.WriteLine(t.Name);
......
}
仅当搜索到的控件直接包含在表单的控件集合中时,这才有效。如果这些文本框包含在某个控件容器中,那么您需要将这些行应用于相应的控件容器而不是表单