Подтвердить что ты не робот

Когда нам нужно использовать [Browsable (true)]?

Когда нам нужно использовать [Browsable(true)]?

EDIT (по SLaks): он спрашивает (я полагаю), почему нужно было бы передать true в качестве параметра, учитывая, что он уже true по умолчанию.

4b9b3361

Ответ 1

MSDN говорит все это:

Указывает, должно ли отображаться свойство или событие в окне свойств.

Например, если вы создаете пользовательский элемент управления, вы можете украсить свойства, не связанные с UI, с помощью [Browsable(false)], чтобы они не были доступны через окно "Свойства".

Кроме того, он контролирует, какие свойства объекта можно увидеть в PropertyGrid.

Что касается того, почему мы можем явно передать true, я полагаю, что это связано с BrowsableAttributes свойство a PropertyGrid. Вы можете установить его в BrowsableAttribute.No, чтобы в сетке свойств отображались все не просматриваемые элементы.

Ответ 2

Насколько я знаю, никогда.

ИЗМЕНИТЬ

Я ошибся.
Это необходимо, если вы хотите создать свойство, которое имеет [Browsable(false)] в базовом классе (например, UserControl.Text).

Ответ 3

Возможно, если вы хотите, чтобы никто не изменил его: P

// 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

Проблема заключается в том, что по умолчанию данные доступны для просмотра. Единственный сценарий, который я могу думать, когда это имеет значение, - это переопределение члена и изменение возможности просмотра... здесь F отображается только из-за [Browsable(true)] в производном классе - без него он не отображается.

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; } }
}

Ответ 5

Типы и атрибуты в ComponentModel специально не привязаны к какому-либо конкретному дизайнеру. Хотя я не знаю какого-либо конкретного сценария, который вам нужно будет "выбрать" для того, чтобы он был доступен для просмотра дизайнера, я полагаю, что возможно, что у вас может быть какой-то конструктор компонентов, который предположил бы просмотр (false).

Предположим, вы также можете переопределить виртуальное свойство, указанное спецификацией просмотра (false), и применить просматриваемый (true) в переопределенном элементе.

Ответ 6

Визуальный дизайнер обычно отображает в окне "Свойства" те элементы, которые либо не имеют атрибута просмотра, либо отмечены параметром просмотра конструктора BrowsableAttribute, установленным в true. Эти члены могут быть изменены во время разработки. Члены, отмеченные параметром просмотра конструктора BrowsableAttribute, установленным на false, не подходят для редактирования времени разработки и поэтому не отображаются в визуальном дизайнере. По умолчанию используется true.

поэтому ответ вам никогда не придется, как это делается по умолчанию.

Ответ 7

В соответствии с документацией вы хотите, чтобы это было правдой, когда оно должно отображаться в окне свойств в VS. В основном это относится к классам, которые используются в дизайнере.

Ответ 8

Однажды, когда этот атрибут становится важным, во время разработки WebPart для Sharepoint. В этом сценарии вы предоставляете метаинформацию для Sharepoint, чтобы определить, должен ли ваш веб-сайт быть доступен для выбора и т.д. Существуют и другие аналогичные атрибуты, такие как Category и FriendlyName и т.д., Которые также принимаются во внимание.

Для примера см. следующие примеры:

Создание веб-части с настраиваемыми свойствами

И еще с приличными изображениями редактора веб-частей sharepoint, который отражает ваши атрибуты:

Обеспечение взаимодействия веб-узлов Sharepoint

Ответ 9

Класс BrowsableAttribute (System.ComponentModel)

В документации указано:

Визуальный дизайнер обычно отображает в окне "Свойства" эти члены которые либо не доступны для просмотра атрибута или отмечены Обозреватель BrowsableAttribute для параметра просмотра доступен значение true.

[Browsable] также по умолчанию имеет значение true.

... так технически, вам никогда не понадобится [Browsable(true)], если вы не хотите быть очень явным.