首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NumericUpDown类型的问题

NumericUpDown类型的问题
EN

Stack Overflow用户
提问于 2010-07-19 21:14:30
回答 1查看 1.3K关注 0票数 0

当我这样做的时候:

代码语言:javascript
复制
public static void BindData<T>(this System.Windows.Forms.Control.ControlCollection controls, T bind)
    {
        foreach (Control control in controls)
        {
            if (control.GetType() == typeof(System.Windows.Forms.TextBox) || control.GetType().IsSubclassOf(typeof(System.Windows.Forms.TextBox)))
            {
                UtilityBindData(control, bind);
            }
            else
            {
                if (control.Controls.Count == 0)
                {
                    UtilityBindData(control, bind);
                }
                else
                {
                    control.Controls.BindData(bind);
                }
            }
        }
    }

    private static void UtilityBindData<T>(Control control, T bind)
    {
        Type type = control.GetType();

        PropertyInfo propertyInfo = type.GetProperty("BindingProperty");
        if (propertyInfo == null)
            propertyInfo = type.GetProperty("Tag");

// rest of the code....

其中controls是System.Windows.Forms.Control.ControlCollection,在作为参数传递给这段代码的窗体上的控件中有NumericUpDowns,我在controls集合(controls=myForm.Controls)中找不到它们,但有其他类型的控件(updownbutton,updownedit)。问题是,我想要获取NumericUpDown的Tag属性,但在使用检查表单控件的递归方法时却无法获取。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-07-19 21:18:26

Tag propertyControl类定义。

因此,您根本不需要反射;您可以简单地编写

代码语言:javascript
复制
object tag = control.Tag;

您的代码不能正常工作,因为控件的实际类型(例如NumericUpDown)没有定义单独的Tag属性,并且GetProperty不搜索基类属性。

顺便说一下,在您的第一个if声明中,您可以简单地编写

代码语言:javascript
复制
if (control is TextBox)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3281308

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档