Рассмотрим следующий код:
Dim Working As Boolean = False
Private Sub TreeView1_AfterCheck(ByVal sender As Object, ByVal e As System.Windows.Forms.TreeViewEventArgs) Handles TreeView1.AfterCheck
If Working Then Exit Sub
Working = True
e.Node.Checked = Not e.Node.Checked
Working = False
End Sub
Private Sub TreeView1_MouseClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles TreeView1.MouseClick
If e.Button = Windows.Forms.MouseButtons.Right Then MsgBox("Checked = " & TreeView1.SelectedNode.Checked)
End Sub
Где TreeView1
- это TreeView
, добавленное к форме, для CheckBoxes
установлено значение true и добавлен один узел. Код в основном отменяет любую проверку узлов, происходящую в форме.
Один щелчок по верхнему узлу для проверки его работоспособности: ваш щелчок немедленно отменяется. Тем не менее, если дважды щелкнуть флажок, будет отображаться галочка . Но проверка состояния проверки с помощью правого клика приведет к диалогу Checked = False
.
Как получилось? Это ошибка (я использую последнюю .Net Framework 4.0, и он тоже появляется в 2.0), или я здесь что-то не так делаю? Есть ли работа вокруг?
РЕДАКТИРОВАТЬ : Кроме того, событие MouseDoubleClick не вызывается до повторного щелчка.
РЕДАКТИРОВАТЬ 2: Опубликовал отчет об ошибке в Microsoft Connect
РЕДАКТИРОВАТЬ 3 : См. Также этот отчет об ошибках .