首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >什么时候需要使用[Browsable(true)]?

什么时候需要使用[Browsable(true)]?
EN

Stack Overflow用户
提问于 2010-03-25 21:11:09
回答 8查看 26.9K关注 0票数 21

我们什么时候需要使用[Browsable(true)]

(by SLaks):他在问(我假设)为什么需要将true作为参数传递,因为在默认情况下它已经是true了。

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2010-03-25 21:13:16

MSDN说it all

指定属性或事件是否应显示在“属性”窗口中。

例如,如果您正在创建一个用户控件,您可能希望用[Browsable(false)]装饰与UI无关的属性,这样它们就不会在“属性”窗口中可用。

此外,它还控制在PropertyGrid中可以看到对象的哪些属性。

至于为什么我们可以显式地传递true,我相信这是由于PropertyGridBrowsableAttributes属性。您可以将其设置为包含BrowsableAttribute.No,以便属性网格将显示所有不可浏览的成员。

票数 20
EN

Stack Overflow用户

发布于 2010-03-25 21:17:41

也许当你想确保没有人改变它的时候:P

代码语言:javascript
复制
// I want to see this, dont change it to false or I'll hunt you down...
[Browsable(true)]
public int MyProperty {
   get {
      // Insert code here.
      return 0;
   }
   set {
      // Insert code here.
   }
}
票数 4
EN

Stack Overflow用户

发布于 2010-03-25 21:23:06

问题是,默认情况下,内容是可浏览的。我认为唯一重要的情况是重写一个成员并更改可浏览性……在这里,F是可见的,因为派生类中的[Browsable(true)] -如果没有它,它是不可见的。

代码语言:javascript
复制
using System.ComponentModel;
using System;
using System.Windows.Forms;
static class Program
{
    [STAThread]
    static void Main() {
        Application.EnableVisualStyles();
        Application.Run(new Form { Controls = {new PropertyGrid {
            Dock = DockStyle.Fill, SelectedObject = new Bar()
        }}});
    }
}
public class Foo
{
    public virtual string A { get; set; }
    public virtual string B { get; set; }
    public virtual string C { get; set; }
    [Browsable(false)] public virtual string D { get; set; }
    [Browsable(false)] public virtual string E { get; set; }
    [Browsable(false)] public virtual string F { get; set; }
    [Browsable(true)] public virtual string G { get; set; }
    [Browsable(true)] public virtual string H { get; set; }
    [Browsable(true)] public virtual string I { get; set; }
}
public class Bar : Foo
{
    public override string A { get { return base.A; } set { base.A = value; } }
    [Browsable(false)] public override string B { get { return base.B; } set { base.B = value; } }
    [Browsable(true)] public override string C { get { return base.C; } set { base.C = value; } }
    public override string D { get { return base.D; } set { base.D = value; } }
    [Browsable(false)] public override string E { get { return base.E; } set { base.E = value; } }
    [Browsable(true)] public override string F { get { return base.F; } set { base.F = value; } }
    public override string G { get { return base.G; } set { base.G = value; } }
    [Browsable(false)] public override string H { get { return base.H; } set { base.H = value; } }
    [Browsable(true)] public override string I { get { return base.I; } set { base.I = value; } }
}
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2515726

复制
相关文章

相似问题

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