如何动态或在运行时设置 PropertyGrid 的 DefaultValueAttribute?

2024-01-08

我正在定义一个与以下命令一起使用的自定义类属性网格 http://msdn.microsoft.com/en-us/library/aa302326.aspx控制。比如说,其中一个属性定义如下:

[CategoryAttribute("Section Name"),
DefaultValueAttribute("Default value"),
DescriptionAttribute("My property description")]
public string MyPropertyName
{
    get { return _MyPropertyName; }
    set { _MyPropertyName = value; }
}

private string _MyPropertyName;

如你所见DefaultValueAttribute定义属性的默认值。这种默认值在两种情况下使用:

  1. 如果更改此属性值的默认值PropertyGrid控件将以粗体显示它,并且

  2. 如果我打电话ResetSelectedProperty的方法PropertyGrid, 它将将该默认值应用于选定的单元格。

这个概念工作得很好,除了一个限制DefaultValueAttribute。它只接受一个常量值。所以我很好奇,我可以动态设置它,例如从构造函数或稍后在代码中设置吗?

EDIT:我能够找到这段代码 http://msdn.microsoft.com/en-us/library/system.componentmodel.defaultvalueattribute.aspx这让我可以阅读DefaultValueAttribute:

AttributeCollection attributes = TypeDescriptor.GetProperties(this)["MyPropertyName"].Attributes;
DefaultValueAttribute myAttribute = (DefaultValueAttribute)attributes[typeof(DefaultValueAttribute)];
string strDefaultValue = (string)myAttribute.Value;

问题是,如何设置呢?


终于,我得到了答案!我遇到过很多展示如何实施的网站ICustomTypeDescriptor and PropertyDescriptor (这是一个 http://www.codeproject.com/Articles/4448/Customized-display-of-collection-data-in-a-Propert),如果您想将两页代码添加到 10 行类中,这很好。

这是一种更快的方法。我发现了一个提示。祝福那些真正发表建设性想法的人!

所以答案是在你的类中提供两种方法。一是private bool ShouldSerializePPP()另一个是private void ResetPPP() where PPP是您的财产名称。前一个方法将被调用PropertyGrid确定属性值是否从默认值更改,并且只要PropertyGrid项目重置为默认值。

以下是我的类在添加这些内容后的样子,这将允许在运行时为属性设置默认值:

[CategoryAttribute("Section Name"),
DescriptionAttribute("My property description")]
public string MyPropertyName
{
    get { return _MyPropertyName; }
    set { _MyPropertyName = value; }
}
private bool ShouldSerializeMyPropertyName()
{
    //RETURN:
    //      = true if the property value should be displayed in bold, or "treated as different from a default one"
    return !(_MyPropertyName == "Default value");
}
private void ResetMyPropertyName()
{
    //This method is called after a call to 'PropertyGrid.ResetSelectedProperty()' method on this property
   _MyPropertyName = "Default value";
}

private string _MyPropertyName;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何动态或在运行时设置 PropertyGrid 的 DefaultValueAttribute? 的相关文章

  • 更改 Qt OpenGL 窗口示例以使用 OpenGL 3.3

    我正在尝试更改 Qt OpenGL 示例以使用更现代的 opengl 版本 330 似乎合适 所以我做了 在 main cpp 上设置版本和配置文件 设置着色器版本 更改着色器以使用统一 它现在构建没有任何错误 但我只看到一个空白窗口 我错
  • 在 Xamarin 中隐藏软键盘

    如何隐藏软键盘以便在聚焦时显示Entry在 Xamarin forms 便携式表单项目中 我假设我们必须为此编写特定于平台的渲染器 但以下内容不起作用 我创建自己的条目子类 public class MyExtendedEntry Entr
  • EF Core 通过完全替换断开集合导航属性的更新

    使用 EF Core 5 0 我有一个 SPA 页面 可以加载Group实体及其集合Employee来自 API 的实体 var groupToUpdate await context Groups Include g gt g Emplo
  • 读取 C# 中的默认应用程序设置

    我的自定义网格控件有许多应用程序设置 在用户范围内 其中大部分是颜色设置 我有一个表单 用户可以在其中自定义这些颜色 并且我想添加一个用于恢复默认颜色设置的按钮 如何读取默认设置 例如 我有一个名为的用户设置CellBackgroundCo
  • 与 Qt 项目的静态链接

    我有一个在 Visual Studio 2010 Professional 中构建的 Qt 项目 但是 当我运行它 在调试或发布模式下 时 它会要求一些 Qt dll 如果我提供 dll 并将它们放入 System32 中 它就可以工作 但
  • 时间:2019-03-17 标签:c#ThreadSafeDeepCopy

    我一直在阅读很多其他问题以及大量谷歌搜索 但我一直无法找到明确的解决方案 根据我读过的一些最佳实践 类的静态方法应该创建线程安全的 并且实例成员应该将线程安全留给消费者 我想为该类实现深度复制方法 该类本身还有其他引用类型成员 有没有什么方
  • 从 WebBrowser 控件 C# 获取滚动值

    我试图在 WebBrowser 控件中获取网页的 Y 滚动索引 但无法访问内置滚动条的值 有任何想法吗 对于标准模式下的 IE 使用文档类型 正如你所说 scrollTop是的财产元素 而不是 HtmlDocument htmlDoc th
  • 为什么 set_symmetry_difference 无法与比较器一起使用?

    Example program include
  • 如何从文本文件读取整数到数组

    这就是我想做的 我对此有些不满 但我希望你能容忍我 这对我来说是一个非常新的概念 1 在我的程序中 我希望创建一个包含 50 个整数的数组来保存来自文件的数据 我的程序必须获取用户的文档文件夹的路径 2 文件的名称为 grades txt
  • 给出 5 个参数,但在终端中只得到 3 个参数

    我想将一个文件传递给一个c 程序 如果我在 IDE 中执行此操作 test string string lt test txt return argc 5 但在终端上我刚刚得到argc 3 看来 这是因为 什么是 lt 意思是 我正在使用
  • 如何在标准 WPF ListView 中启用 UI 虚拟化

    我正在使用 NET 4 5 VS2012 并且我有一个 ListView 看起来像这样
  • 每个租户的唯一用户名和电子邮件

    我正在使用以下代码编写多租户应用程序ASP NET Core 2 1 我想覆盖默认的与用户创建相关的验证机制 目前我无法创建多个具有相同的用户UserName My ApplicationUser模型有一个名为TenantID 我想要实现的
  • C# 中的 strstr() 等效项

    我有两个byte 我想找到第二个的第一次出现byte 在第一个byte 或其中的一个范围 我不想使用字符串来提高效率 翻译第一个byte to a string会效率低下 基本上我相信就是这样strstr 在 C 中做 最好的方法是什么 这
  • 我可以让 ungetc 取消阻止阻塞的 fgetc 调用吗?

    我想在收到 SIGUSR1 后使用 ungetc 将 A 字符重新填充到标准输入中 想象一下我有充分的理由这样做 调用 foo 时 stdin 中的阻塞读取不会被收到信号时的 ungetc 调用中断 虽然我没想到它会按原样工作 但我想知道是
  • 使用restsharp序列化对象并将其传递给WebApi而不是序列化列表

    我有一个看起来像的视图模型 public class StoreItemViewModel public Guid ItemId get set public List
  • 了解使用 Windows 本机 WPF 客户端进行 ADFS 登录

    我已经阅读了大量有关 ADFS 与 NodeJS Angular 或其他前端 Web 框架集成以及一般流程如何工作的文献 并通过 Auth0 Angular 起始代码构建了概念证明 但我不明白如何这可以与本机 WPF Windows 应用程
  • 更改 Windows Phone 系统托盘颜色

    有没有办法将 Windows Phone 上的系统托盘颜色从黑色更改为白色 我的应用程序有白色背景 所以我希望系统托盘也是白色的 您可以在页面 XAML 中执行此操作
  • QFileDialog::getSaveFileName 和默认的 selectedFilter

    我有 getSaveFileName 和一些过滤器 我希望当用户打开 保存 对话框时选择其中之一 Qt 文档说明如下 可以通过将 selectedFilter 设置为所需的值来选择默认过滤器 我尝试以下变体 QString selFilte
  • 使我的 COM 程序集调用异步

    我刚刚 赢得 了在当前工作中维护用 C 编码的遗留库的特权 这个dll 公开使用 Uniface 构建的大型遗留系统的方法 除了调用 COM 对象之外别无选择 充当此遗留系统与另一个系统的 API 之间的链接 在某些情况下 使用 WinFo
  • xsi:type 属性搞乱了 C# XML 反序列化

    我使用 XSD exe 根据 XML 架构 xsd 文件 自动生成 C 对象 我正在反序列化 OpenCover 输出 但其中一个部分类未正确生成 这是导致异常的行

随机推荐

  • 无法在 spring-boot 应用程序中从 Consul 读取配置

    我正在创建一个Spring Boot应用程序 它将读取诸如数据库属性之类的配置Consul 但我无法使用我的应用程序从 Consul 读取键值 以下是我正在尝试做的事情 pom xml
  • System.UnauthorizedAccessException:对路径的访问被拒绝

    无论我做什么 例如授予网络服务和 ASP NET 帐户对包含图像的文件夹的完全权限 我仍然收到 System IO File Move 的此错误 有人知道我在这里可能还缺少哪些其他帐户吗 网络服务是运行应用程序池的帐户 该网站在该应用程序池
  • 使用python检测关闭事件

    我有一个 Minecraft 基岩版服务器在我们的共享电脑上运行 我想通过 python 与它交互 然而 我遇到的一个问题是我的兄弟有时会重新启动我们的电脑或 Windows 更新 我需要知道如何检测关闭事件并在重新启动之前将关闭命令发送到
  • Html5 标题标签验证错误

    您好 我正在根据 html 5 验证我的源代码 但我收到此错误 现在知道如何解决它 这是错误 在此上下文中 不允许 XHTML 元素标题作为 XHTML 元素元的子元素 抑制该子树中的更多错误 有任何想法吗 在对 XML 规则严格的 XHT
  • %g 如何对浮点数进行四舍五入?

    当我使用时 g作为格式说明符printf 有时四舍五入到小数点后 2 位 有时到 3 位 有时到 4 位 它是如何做到的 实际上我们应该在哪里使用 g代替 f or e对于浮点数 The g格式说明符的舍入就像 f会做 但如果 f会导致4
  • 在 PHP 中查找仅包含特定字符集的数组元素

    我只需要查找具有一组特定字母以及该组字母之前或之后的任何字符的数组元素 我有这样的数组 sample array sten netff enet denet value array e n t 我需要从中找到值 sample数组有 e n
  • 应用程序无响应(ANR)执行服务android

    host activity 是我的包 host framework ServicePromemoria 是一个android 服务 这个错误是什么意思 这意味着您的服务正在执行相当长的操作 大多数 ANR 来自超过 5 秒的操作 并且是在
  • PHP + MYSQL 对 Duplicate KEY 仍然增加 INDEX KEY

    我的桌子有这种风格 ID EMAIL VERSION LASTUPDATE 其中 id 是自动增量并且主要 并且电子邮件是唯一的 因此 每次有人使用我的应用程序时 它都会获取用户电子邮件并尝试插入 如果电子邮件已存在 则会将该行更新为 ve
  • 自动重试 401 并使用 HttpClient 4.3 发送特定请求

    我在应用程序中使用特定的身份验证机制 登录应用程序将登录请求发送到特定的 url login 并获取存储在 cookie 中的会话令牌 服务器随时可以使令牌失效 其他请求将导致 401 我希望 HttpClient 自动检测 401 错误
  • UITableViewController 上的上边距

    我有一个 TabBarController 其中一个选项卡包含一个子视图 它是一个导航控制器 然后 我将继承 UITableViewController 的视图加载到导航控制器中 我的问题是 由于某种原因 表格视图开始位于导航控制器后面 而
  • vuejs 路由器 - 要求未定义

    我正在尝试从这个开始 https github com vuejs vue router https github com vuejs vue router 我已经克隆了该包 并按照说明进行构建 npm install npm run bu
  • 实体框架 6 中的多异步?

    这是我的代码 var banner context Banners ToListAsync var newsGroup context NewsGroups ToListAsync await Task WhenAll banner new
  • 在 Swift 4 中实现自定义解码器

    我想使用新的解码 XML 文档DecodableSwift 4 中引入的协议 但是 似乎没有符合该协议的 XML 解码器的现有实现Decoder协议 我的计划是使用 SWXMLHash 库来解析 XML 然后可能使XMLIndexer该库中
  • 为什么选择 React.Children.only?

    向反应专家提出快速问题 React Children only https reactjs org docs react api html reactchildrenonly是它的顶级 api 之一 react redux 非常常用
  • 是否可以通过AWS lambda连接到本地计算机托管的数据库

    我在 AWS 中启动了一个 RDS 实例 s3 和 EC2 并且使用 lambda 正确触发了它 现在我希望将 RDS 和 EC2 从 AWS 更改为本地计算机 我的 lambda 是从 s3 触发的 在AWS中如何通过lambda连接本地
  • 来自事件的流星地理定位方法

    我想获取 latLng 但只能在事件发生后获取 如何才能实现这一目标 我尝试过跟踪器等 但没有任何效果 唯一有效的是调用 Geolocation latLng 从事件之前的助手内部 这就是我希望它能发挥作用的方式 我对 Session se
  • Sones GraphDB 查询返回错误

    我在这里关注他们的教程 http developers sones de wiki doku php id quickreference 五分钟指南 http developers sones de wiki doku php id qui
  • CryptoJS 和 Closure 中的 SHA512 不一样

    我在一个简单的加密挑战中遇到了一些麻烦 我想做以下事情 获取 url 编码和 base64 编码的值 进行 url 解码 进行 Base64 解码 使用 Sha512 进行哈希处理 使用 CryptoJS 时 我使用以下代码 var par
  • 在 Shiny R 中保存用户输入的 LeafletProxy 结果

    在 Shiny R 中 我正在制作一个带有叠加层的地图应用程序 然后添加用户输入的叠加层 因此 当用户上传数据并看到带有标记的更新地图后 我希望用户能够将新地图下载为 html 文件 我将在下面对我正在做的事情做一个简化的演示 服务器 ui
  • 如何动态或在运行时设置 PropertyGrid 的 DefaultValueAttribute?

    我正在定义一个与以下命令一起使用的自定义类属性网格 http msdn microsoft com en us library aa302326 aspx控制 比如说 其中一个属性定义如下 CategoryAttribute Section