как использовать класс BrowsableAttribute для отображения в таблице свойств - PullRequest
1 голос
/ 27 июля 2011

Мне нужно отобразить эти строки 'm_nullPolicy' и 'm_nullVersion' в окне свойств, я имею в виду в сетке свойств.на данный момент он отображается в пользовательском интерфейсе. Когда я выполнил поиск, я вижу, что класс BrowsableAttribute сделает это, но я не знаю, как реализовать это здесь, кто-нибудь может подсказать мне здесь

Это код для отображения значенияв пользовательском интерфейсе

if (Data.ResourcePolicy == null)
                            {
                                if (Data.AgentVersion == null)
                                {
                                    SubItems.Add(ResourcePolicyAvailSystemsLVI.m_nullString);
                                }
                                else
                                {
                                    SubItems.Add(m_nullPolicy);
                                }
                            }
                            else
                            {
                                SubItems.Add(Data.ResourcePolicy.Name);
                            }
                            if (Data.AgentVersion == null || Data.AgentVersion.Equals("0.0.0.0"))
                            {
                                SubItems.Add(ResourcePolicySystemsControl.m_nullVersion);
                            }
                            else
                            {
                                SubItems.Add(Data.AgentVersion);
                            }

1 Ответ

0 голосов
/ 27 июля 2011

При ручном обращении к PropertyGrid вручную атрибут BrowsableAttribute не применяется.

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

Однако вы можете использоватьавтоматизированный способ ... то есть, используя объект, который содержит свойства с BrowsableAttribute, и назначьте объект свойству SelectedObject.

Попробуйте выполнить следующее:

Создайтеclass, с некоторыми свойствами, например:

    class MyClass
    {
        public string Name { get; set; }

        [BrowsableAttribute(false)]
        public string InvisibleProperty { get; set; }
    }

Создайте форму с сеткой свойств.

Теперь создайте экземпляр класса и присвойте его свойству SelectedObject, возможно, в формесобытие загрузки:

    private void Form1_Load(object sender, EventArgs e)
    {
        propertyGrid1.SelectedObject = new MyClass();
    }

В этом примере в сетке свойств будет показано свойство Name, но не InvisibleProperty.

...