Горячая фиксация изменений для TreeView при редактировании узла (C #)? - PullRequest
1 голос
/ 16 сентября 2008

Я играю с элементом управления TreeView от Microsoft и пытаюсь принудительно обновить данные некоторых типов при редактировании метки узла, аналогично UpdateData для сетки.

По сути, в моем редакторе у меня есть кнопка Сохранить и этот элемент управления TreeView: я хочу, чтобы при редактировании метки узла в TreeView, если я нажимаю кнопку Сохранить, я хочу иметь возможность зафиксировать узел ярлык, который я редактировал.

Ответы [ 3 ]

0 голосов
/ 16 сентября 2008

Я приму ответ, даже если он на самом деле не задокументирован: есть ли у него такой метод или нет? Вы на самом деле не ответили на это, просто передали вопрос мне.

Тем временем нашел то же самое решение для взлома с принудительным фокусированием на каком-то другом элементе управления (не очень элегантном, но работающем), хотя это немного сложнее для меня, поскольку я использую TreeView как часть UserControl.

0 голосов
/ 18 сентября 2008

Вам действительно нужна кнопка сохранения?

вы можете прослушивать конец редактирования узла - например, прослушивая клавишу «return» в событии KeyDown TreeView. если вы что-то редактируете (узнайте с помощью SelectedNode.IsEditing), то вы знаете, что у вас есть коммит. Затем вы можете зафиксировать это в своих данных. Если вы хотите иметь возможность редактировать много разных узлов и сохранять их все в конце, то вам нужно добавить каждый отредактированный узел в какую-либо коллекцию, а затем, когда вы нажмете кнопку сохранения, выполните итерацию по этой коллекции.

0 голосов
/ 16 сентября 2008

Редактирование метки узла выполняется с помощью текстового поля, и когда это текстовое поле теряет фокус, изменение имени будет зафиксировано как новая метка для узла. Таким образом, если кнопка «Сохранить», на которую вы нажимаете, захватывает фокус, это автоматически вызывает обновление, поскольку текстовое поле теряет фокус.

Если кнопка «Сохранить» не фокусируется, необходимо обработать событие щелчка для кнопки «Сохранить» и попросить дерево прекратить любое текущее редактирование метки. Если у вас нет метода / свойства, вы можете вызвать запрос на завершение редактирования метки, поэтому у вас есть два варианта. Если вид дерева имеет фокус, поместите фокус в другое место. Или снова включите / выключите редактирование меток ...

treeView.LabelEdit = false;
treeView.LabelEdit = true;
...