Visual Studio автоматически меняет одно из моих свойств на ноль - PullRequest
1 голос
/ 25 июля 2011

Как я могу сказать ему отступить и оставить свойство одним?

Вот свойство:

/// <summary>
/// Collection of SednaTreeViewItems used to populate the SednaTreeView.
/// </summary>
public IEnumerable<SednaTreeViewItem> TreeNodes
{
    get { return treeNodes; }
    set 
    {
        ultraTree.Nodes.Clear();
        treeNodes = value;
        foreach (var item in treeNodes)
        {
            UltraTreeNode node = new UltraTreeNode(item.ValueMember, item.DisplayMember);
            ultraTree.Nodes.Add(node);
        }
    }
}

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

Ответы [ 2 ]

3 голосов
/ 25 июля 2011

Исправление - это атрибут DesignerSerializationVisibility , который не позволяет конструктору сериализовать значение свойства (т. Е. Добавить нежелательную информацию в файл Designer.cs).

Это выглядит так:

using System.ComponentModel;

/// <summary>
/// Collection of SednaTreeViewItems used to populate the SednaTreeView.
/// </summary>
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
public IEnumerable<SednaTreeViewItem> TreeNodes
{
    get { return treeNodes; }
    set 
    {
        ultraTree.Nodes.Clear();
        treeNodes = value;
        foreach (var item in treeNodes)
        {
            UltraTreeNode node = new UltraTreeNode(item.ValueMember, item.DisplayMember);
            ultraTree.Nodes.Add(node);
        }
    }
}
2 голосов
/ 25 июля 2011

Вы можете добавить атрибут, чтобы он не был «доступным для просмотра» в конструкторе.

http://msdn.microsoft.com/en-us/library/system.componentmodel.browsableattribute.aspx

Браузер не совсем работал, но есть еще один вопрос, который предлагает другой атрибут.

Как заставить WinForm Designer полностью игнорировать свойство в пользовательском элементе управления?

...