«Призрачные узлы» в System.Windows.Forms.TreeView? - PullRequest
1 голос
/ 06 мая 2011

У меня есть простая форма с TreeView, которая называется treeView1, и мне нравится добавлять к ней некоторые узлы в обработчике HandleCreated, например:

using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();

            treeView1.CheckBoxes = true;

            treeView1.HandleCreated += delegate
            {
                // Add one and only one node
                treeView1.Nodes.Add(new TreeNode("A Node"));
            };
        }
    }
}

При запуске этой формы на самом деле видны два узла! Когда я нажимаю флажок на втором узле, первый узел отмечается / не отмечается.

Кто-нибудь знает способ предотвратить этот "призрачный узел"?

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

1 Ответ

1 голос
/ 06 мая 2011

Странно! Похоже на ошибку ... Вы должны сообщить об этом на сайт connect .

Одним из решений, если вы действительно хотите зацепить создание дескриптора, является наследование от TreeView, например, и использование этого класса вместо стандартного TreeView:

public class MyTreeView : TreeView
{
    protected override void OnHandleCreated(EventArgs e)
    {
        base.OnHandleCreated(e);
        Nodes.Add(new TreeNode("A Node"));
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...