gpt4 book ai didi

c# - 如何在运行时在 C# 中查找控件的默认属性值

转载 作者:太空狗 更新时间:2023-10-29 23:01:21 27 4
gpt4 key购买 nike

我有一个控件...任何 System.Windows.Forms.Control。说例如。标签。

我希望找到其名为“Enabled”的属性的默认值(可以是与此相关的任何属性)。我该怎么做?

1) 看,在这种情况下,我们有一个标签。属性“Enabled”的标签默认值为 true。

2) 现在在运行时,假设我想找出属性“Enabled”的默认值是多少...我该如何找出?

3) 首先,我有一个可以控制的对象。从该对象中,我只能获取属性“Enabled”的当前值,而不能获取 DEFAULT 值。

解决这个问题的一种可能方法是:

1)在运行时识别控件的类型。2)使用默认构造函数初始化它。3) 找到我们感兴趣的属性的值(它显然是默认值)并且那里..我们有默认值。

但是,在这种情况下......我事先不知道我的控制权。我所知道的是,它可以是 System.Windows.Forms.Control 中的任何控件。那么我该如何初始化它并获取它的对象呢?可能吗?

您有任何替代解决方案/更好的方法吗?

最佳答案

这是使用反射的好机会!这是一个方法,它应该为具有默认构造函数(公共(public),无参数)的任何类型获取任何属性的默认值:

public static object GetDefaultPropertyValue(Type type, string propertyName)
{
if (type.GetConstructor(new Type[] { }) == null)
throw new Exception(type + " doesn't have a default constructor, so there is no default instance to get a default property value from.");
var obj = Activator.CreateInstance(type);
return type.GetProperty(propertyName).GetValue(obj, new object[] { });
}

请注意,如果您使用大量控件执行此操作,其中可以有多个单一类型,您可能希望缓存每种类型的结果,因为反射有点慢。

关于c# - 如何在运行时在 C# 中查找控件的默认属性值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11157058/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com