首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >查找和使用隐藏属性(如DisplayRectangle)

查找和使用隐藏属性(如DisplayRectangle)
EN

Stack Overflow用户
提问于 2010-09-14 12:18:24
回答 3查看 2.1K关注 0票数 1

在许多代码示例中,我发现了正在使用的Control的DisplayRectangle属性。但是,该属性不会出现在intellisense弹出窗口中,也不会得到任何语法高亮显示,但它确实会按预期进行编译和工作。

我应该使用这种财产吗?

我如何才能找到更多的他们,他们能被激活在智能感知吗?

Update/Clarification:,我现在已经发现,它似乎确实取决于哪个控件。以下代码确实编译了:

代码语言:javascript
复制
        Control c = sender as Control;
        Form f = sender as Form;
        PictureBox p = sender as PictureBox;
        Console.Write(c.DisplayRectangle); // No Intellisense
        Console.Write(f.DisplayRectangle); // Intellisense
        Console.Write(p.DisplayRectangle); // No Intellisense

我的问题是关于DisplayRectangle for PictureBox,或一般的控制。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-09-14 12:37:34

这是财产的申报:

代码语言:javascript
复制
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
[EditorBrowsable(EditorBrowsableState.Advanced)]
[Browsable(false)]
[SRDescription("ControlDisplayRectangleDescr")]
public virtual Rectangle DisplayRectangle
{
    get
    {
        return new Rectangle(0x0, 0x0, this.clientWidth, this.clientHeight);
    }
}

从可浏览开始,该属性确保属性不会出现在Properties窗口中。这很有意义,因为它是一个运行时属性,并且没有setter。这也是与DesignerSerializationVisibility相关的,它确保属性值不会被写入InitializeComponent()方法。SRDescription是用于本地化的。

EditorBrowsable与你的问题相关。使用EditorBrowsableState.Advanced确保只有在编辑器以“显示高级IntelliSense信息”模式操作时,IntelliSense才会显示该属性。我所知道的唯一使用此功能的IDE是VB.NET,它的IntelliSense弹出窗口有一个"All“选项卡,但默认为"Common”。但不是C# IDE,你用的语言标记了你的问题。

我不得不猜测,您实际上是在用VB.NET而不是C#编程。单击弹出窗口上的“全部”选项卡。

票数 8
EN

Stack Overflow用户

发布于 2010-09-14 12:24:36

相反,您是否可以轻松地将该行修改为:(c as Control).DisplayRectangle。在此样式中,关闭大括号后,intellisense应该显示该属性。这能解决你的问题吗?

票数 0
EN

Stack Overflow用户

发布于 2013-04-21 10:23:56

要扩展Hans的答案,这些EditorBrowsableState.Advanced属性将不会在自动完成IntelliSense中显示,除非您没有选中“隐藏高级成员”

根据http://msdn.microsoft.com/en-us/library/system.componentmodel.editorbrowsableattribute.aspx的说法,“在VisualC#中,您可以控制高级属性何时出现在IntelliSense和”属性“窗口中,而”隐藏高级成员“设置在”工具“选项”文本编辑器“下。

请注意,在我完成完整(正确大小写)属性名之后,无论我如何设置选项复选框,工具提示都会弹出.也许是因为我一直在使用带有高级打开功能的VS,而现在它的缓存数据库包含了详细信息,但我相信这不是全部:我注意到,使用一个声明为"EditorBrowsable(EditorBrowsableState.Advanced)公共无效测试(Object)的测试方法(对象o),使用一个字符串参数会弹出" Test(object )“签名,因此它确实会检索比显示的更多的细节.

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3708771

复制
相关文章

相似问题

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