【问题标题】:How to make a property field shows up in the VS property grid, not custom property grid?如何使属性字段显示在 VS 属性网格中,而不是自定义属性网格中?
【发布时间】:2021-07-08 15:28:53
【问题描述】:

我制作了一个从Panel 派生的自定义控件,其中包含一些属性,比如说

public int Amount {get; set;}
public string Name {get; set;}

如何让它出现在 Visual Studio 的属性网格中,而不是我拖入的 PropertyGrid 控件中?

我在网上找到的所有内容都在谈论如何向PropertyGrid“控件”添加属性,这不是我想要的。

有人能这么好心教我怎么做吗?

非常感谢!

【问题讨论】:

  • 自定义 WinForms 控件的公共属性将自动显示在 VS 属性窗口中;如果没有出现,请重建您的解决方案/重新启动 VS。
  • 如果您希望该属性显示在特定部分,请查看此链接:docs.microsoft.com/en-us/previous-versions/visualstudio/…
  • @CoolBots 这两个我都试过了,但还是没有出现!可能是我错过的某种设置或版本问题?我用的是 2019 年。
  • @CoolBots 好的,谢谢!但我还是想给 Jimi 一个发帖的机会,因为毕竟是他解决了我的问题,而不是我自己!
  • 您可以自己发布答案,或者@CoolBots 可以这样做,这很好,我喜欢团队合作:) -- 可能添加这些属性的用途描述。当有意义的事情发生变化时,移除-添加回 UC(有时还有自定义控件)背后的原因更复杂,但我认为事实本身就足够了。

标签: c# visual-studio winforms


【解决方案1】:

根据@Jimi 的说法,自定义控件需要“预编译”才能显示在属性网格中,因此首先删除每个自定义控件,重建项目,然后拖入自定义控件将使所有内容都很好地显示.

但我在尝试@Jimi的方法时也找到了另一种解决方案,即:

在自定义控件添加新属性后,手动将默认值添加到设计器页面,如Form1.Designer.cs,例如

CustomControl.Number = 0;

然后它将显示在属性网格中。

我猜 VS“DID”试图在属性网格中显示它,但由于该属性尚未实例化,VS 无法知道它到底是什么,最终要么抛出错误,要么只是忽略它完全!

这就是为什么预编译或手动添加默认值会起作用的原因。

【讨论】:

  • 很高兴听到您的问题已经解决,您可以点击“✔”将您的回复标记为答案。它还将帮助其他人解决类似的问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-11-02
  • 1970-01-01
  • 2014-10-22
  • 2017-11-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多