WinForms: почему Control.Parent не определен? - PullRequest
0 голосов
/ 18 мая 2010

Я пытаюсь получить родительский элемент списка, закрепленный в splitcontainer, и обнаружил, что ListView.Parent равно null.

Согласно документации это должно быть:

Элемент управления, представляющий родительский или контейнерный элемент управления.

Может кто-нибудь объяснить, почему это свойство будет нулевым? Я пытался переместить ListView в форму (чтобы исключить странное поведение при закреплении в splitcontainer), но безрезультатно.

Ответы [ 4 ]

2 голосов
/ 19 мая 2010

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

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

0 голосов
/ 18 мая 2010

Кажется, что ListView не входит в коллекцию элементов управления SplitterPanel SplitContainer (дизайнер-ошибка?). Когда это не работает на конструкторе, измените его в designer.vb (?) Вручную следующим образом:

Me.SplitContainer1.Panel2.Controls.Add(Me.ListView1)
0 голосов
/ 18 мая 2010

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

0 голосов
/ 18 мая 2010
  1. Является ли представление списка в коллекции элементов управления splitcontainer?
  2. Когда вы проверяете родительское свойство? Можете ли вы переопределить метод OnLoad и проверить после вызова base.OnLoad?
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...