我在我的应用程序中创建了许多自定义用户控件 . 它们是使用Validates()方法验证自己内容的控件 . 当我单击窗体上的一个按钮时,我想在任何具有该方法的控件上调用此方法 . 实现这一目标的最佳方法是什么?
我能够识别和控制并检查他们是否有方法,但不确定如何在此时调用它 . (所有控件都以'cc'开头)
foreach (Control c in this.Controls)
{
if (c.Name.Length > 2 && c.Name.Substring(0, 2).Equals("cc"))
{
var type = c.GetType();
if (type.GetMethod("Validates") != null)
{
// Call method here
}
}
}
任何人都可以指出我正确的方向,或者更好的方式我可以做到这一点 . 我希望这些控件有很多形式,所以我想从父表单中尽可能简单地进行分组验证 .
谢谢,
3 回答
也许尝试使用接口
在您的表单中迭代所有控件,但不检查名称,但确定控件是否实现IValidateMyData接口:
使用此方法,您的控件不一定具有特定的名称前缀 .
此外,您可以将迭代移动到所有控件上,将验证移动到表单继承的基类,并在表单中调用“ValidateAllControls()”方法 .
在WinForms中执行此操作的常用方法是使用Form Validating事件 .
您应该创建一个
interface
,并且每个具有Validate
方法的控件都应该实现该接口 .并检查循环中的界面 .