在许多代码示例中,我发现了正在使用的Control的DisplayRectangle属性。但是,该属性不会出现在intellisense弹出窗口中,也不会得到任何语法高亮显示,但它确实会按预期进行编译和工作。
我应该使用这种财产吗?
我如何才能找到更多的他们,他们能被激活在智能感知吗?
Update/Clarification:,我现在已经发现,它似乎确实取决于哪个控件。以下代码确实编译了:
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,或一般的控制。
发布于 2010-09-14 12:37:34
这是财产的申报:
[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#编程。单击弹出窗口上的“全部”选项卡。
发布于 2010-09-14 12:24:36
相反,您是否可以轻松地将该行修改为:(c as Control).DisplayRectangle。在此样式中,关闭大括号后,intellisense应该显示该属性。这能解决你的问题吗?
发布于 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 )“签名,因此它确实会检索比显示的更多的细节.
https://stackoverflow.com/questions/3708771
复制相似问题