Попробуйте расширить класс TreeNode и добавьте логическое свойство, которое поддерживает надлежащий selectedState. Таким образом, когда кто-то дважды щелкает узел, вы можете сбросить проверенное состояние узла обратно на значение, сохраненное в свойстве. Возможно, есть более элегантное решение, но это лучшее, что я могу придумать.
образом, у меня есть TreeView в приложении формы C # Windows. Мне нужно, чтобы некоторые узлы были «заблокированы», чтобы они не могли быть проверены (или не проверены) на основе параметра.
То, что я делаю сейчас, это:
private void tv_local_BeforeCheck(object sender, TreeViewCancelEventArgs e) {
TNode node = (TNode)e.Node;
//if a part node, cancel the action.
if (node.Type == "Part") {
e.Cancel = true;
}
//if a locked node, cancel the action
if (node.Locked == true) {
e.Cancel = true;
}
}
Этот код прекрасно работает при одном щелчке флажка, но если пользователь дважды щелкает по флажку, он все равно проверяет / снимает флажок.
Я пытался поиграть с событием nodeMouseDoubleClick, но это не очень помогает, так как я не могу отменить событие ...
Есть какие-нибудь идеи, как отменить событие двойного щелчка на узле? ... или что-нибудь еще? Спасибо