WinForms TreeView
のチェックされていないノードをダブルクリックすると、視覚的にチェックが行われてからチェックが外されます。次のイベントハンドラによって検出されるようにWinForms TreeView紛失イベントのチェック
しかし一つだけAfterCheck
イベントが起動されます:
private void treeView1_AfterCheck(object sender, TreeViewEventArgs e)
{
System.Diagnostics.Debug.WriteLine("{0} {1}: {2}", e.Node.Checked, e.Node, e.Action);
}
e.Node.Checked
は、GUIで視覚的な表現がオフになっているにもかかわらずtrue
です。
このチェックボックスを再度クリックすると、Node.Checked
のイベントがfalse
になり、AfterCheck
イベントが発生します。チェックボックスはGUIではチェックされません。
チェックノードをダブルクリックする場合は、逆の場合もあります。
Visual Studio 2010で.NET 4.0用にコンパイルしていて、.NET 4.5.1で実行しています。
これを回避する方法はありますか?
私は他の人の後にWriteLineメソッドにe.Node.Checkedを追加しました。もっと元気に編集されました。 – Matt
ツリービューのチェックボックスをダブルクリックすると、チェック後のイベントで問題が発生するだけでなく、次のマウスがダウンすると問題が発生し、ツリービュー自体をクリックすると次のマウスクリックが失われます。 問題はWindows XPには存在しませんが、7および8.1に存在することが確認できます。 –
@HansPassantの古い投稿でも言及されています。* Windows版ネイティブコントロールのVista版は、TreeViewラッパーにバグを引き起こしました。ラッパーが検出してBeforeCheckイベントとAfterCheckイベントを発生させるための通知メッセージを生成せずに、アイテムを自動的にチェックします。 –