使用值为name的字符串引用控件



C#中有没有一种方法可以通过使用字符串变量的值来引用控件,在我的例子中是TextBox?我正在使用下面的代码制作一个单一的方法,多个控件可以用于"LostFocus"事件。sender文本框需要根据其他文本框的内容计算结果。问题是大约有12行TextBoxes,虽然这段代码可以重用事件方法,但我想不出一种方法来引用sender的正确框。所有的框都有相似的名称(例如-miCellSaturation、miCellRecords、orSaturation或Records),所以我的想法是,如果我可以用Substring命令隔离部分TextBox名称,然后将其与另一个字符串连接以形成完整的TextBox名称,这将起作用。我可以做所有这些,但我不知道如何使用连接字符串来引用那个框。这是否需要遍历所有框,直到匹配正确的名称?

        TextBox box = (TextBox)sender;
        string boxName = box.Name;
        if(boxName.EndsWith("Saturation"))
        {
        }

不一定能正确理解你的问题,但如果你需要找到对一个特定类型的控件的引用,它的名称以预定义的字符串结尾,那么你可以使用

var list = YourForm.Controls.OfType<TextBox>()
                   .Where(x => x.Name.EndsWith("YourString"));
foreach(TextBox t in list)
{
   Console.WriteLine(t.Name);
   ......
}

只有当搜索到的控件直接包含在表单的控件集合中时,这才有效。如果这些文本框包含在某个控件容器中,则需要将这些行应用于相应的控件容器,而不是表单

最新更新