Как вы обновляете древовидную структуру из другого потока? Мое древовидное поведение действует как проводник и позволяет пользователю выбирать другую родительскую папку. Когда я пытаюсь изменить родителя из другого пользовательского интерфейса, ничего не происходит, угадывая, потому что он использует другой поток. Я читал несколько примеров, объясняющих использование «Invoke» и делегатов, но не могу заставить его работать.Изменение пути TreeView из другого потока C#
ответ
Попробуйте сделать это. Контекст выполнения должен быть привязан к потоку пользовательского интерфейса.
treeView.HandleCreated += (s, a) => {
treeView.Invoke(new Action(() => treeView.Nodes.Clear()));
};
Также попробуйте это из контекстного меню выбрать событие, используя метод Invoke вызывающего элемента управления.
Invoke(new Action(() => treeView.Nodes.Clear()));
Это привело к следующей ошибке: Invoke или BeginInvoke не могут быть вызваны в элементе управления до тех пор, пока не будет создан дескриптор окна. – matinau
см. Мое обновление. Нет реальной причины для вызова Clear() в древовидной структуре, поскольку она создается, потому что она уже пуста. Я начинаю думать, что вы управляете не созданием, когда думаете, что это так. – drankin2112
Извините, я просто использовал 'Clear();' в качестве примера – matinau
- 1. C# Изменение текста кнопки основного потока из другого потока
- 2. Завершение потока в C++ из другого потока
- 3. Заселите TreeView из списка пути
- 4. Изменение списка из другого потока в WPF?
- 5. Изменение ViewModel имущества из другого потока
- 6. Изменение списка из другого потока во время прохода (C#)
- 7. Как добавить объект в treeview из другого потока
- 8. Вызов функции из другого потока в C#
- 9. WPF C# - Редактирование списка из другого потока
- 10. C++ Vector, push_back из другого потока сбой?
- 11. Обновление UI из другого потока в C#
- 12. Изменение значения узла treeview
- 13. DoDragDrop() из другого потока
- 14. Debugging из другого потока
- 15. Как предотвратить изменение TreeView TreeView?
- 16. Прервать чтение() из другого потока
- 17. Закрытие формы из другого потока
- 18. C# получить атрибуты XElement из XDocument с помощью пути treeview
- 19. Создание иерархии TreeView из строки типа пути - C# .NET
- 20. Как получить состояние потока из другого потока?
- 21. shared_from_this() из другого потока (функция потока элемента)
- 22. Изменение элементов пользовательского интерфейса из другого потока в .NET
- 23. Изменение цвета текста в WPF RichTextBox из другого потока
- 24. Доступ/изменение пользовательского интерфейса Свойства элемента из другого потока
- 25. Изменение свойств элементов управления из другого потока в VB.net
- 26. Изменение объекта из другого потока во время сериализации
- 27. Обновить ярлык из другого потока
- 28. C#: Поиск из treeview
- 29. TreeView Databind - из C# объекта?
- 30. Изменение переменных экземпляра из другого класса C#
Все пользовательские интерфейсы работают в основном потоке приложения, если только вы не создали новые потоки самостоятельно. – drankin2112
Элементы управления размещены в usercontrol, который используется для создания палитры инструментов в AutoCAD. В палитре инструментов есть собственный ContextMenu, в котором я пытаюсь добавить методы для изменения библиотеки Treeview и т. Д. Если я просто вызову treeView.Nodes.Clear(); из toolPalette ничего не происходит, тогда как это отлично работает в usercontrol. Это заставило меня поверить, что это проблема с потоком. – matinau