WindowsフォームでTreeviewを使用していますが、問題が発生しています。展開と折りたたみに関する私のノードの選択はツリービューの一番下で変わります。私はafterselectとMosueDownイベントを使用しています。私の問題は、右のコンテキストメニューも使用しているので、私はAfterSelectとMouseDownの両方のイベントをアプリケーションで処理しなければならないことです。以下は私が使用しようとしているサンプルコードです。この問題を解決する方法やアドバイスはありますか?上記のPICでWinform C#:展開と折りたたみに関するノードの選択がツリービューの下部で変更される
private void trView_MouseDown(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Right)
{
trView.SelectedNode = trView.GetNodeAt(e.X, e.Y);
}
//trView.SelectedNode.EnsureVisible(); //tried this as well
trView.SelectedNode.Toggle(); // on this toggle selection changes butonly at the bottom (more specifically for last 3 nodes)
}
private void trView_AfterSelect(object sender, TreeViewEventArgs e)
{
// Code to add child nodes to a selection.
}
私はプロジェクトを超えてノードを選択していたときに、UATデータが選択されます。これは最後の3つのノードでのみ起こります。ハマった。助けてください。あなたはこれらのオプションのいずれかを使用することができます
Toggle()呼び出しは非常に悪いランダマイザです。左クリックの動作が非常に悪くなります。 MouseDownでは、ノードはまだ選択されていないので、完全に間違ったノードが展開されます。それを削除し、AfterSelectイベントハンドラがExpand()を呼び出すようにします。 –
あなたは 'if(e.Button == MouseButtons.Right)'をチェックしているので、 '+/-'には何の問題もありません。その基準がない場合は、 'TreeView.HitTest'を使用し、マウスが' +/- 'になっているかどうかをチェックして、標準の振る舞いをトグルして実行させないでください。 –
Afterslectで展開すると別の問題が発生し、避けるためにmousedownで.Toggle()を使い始めました。トグルは、最後の3つのノードを除くすべてのノードで機能します。 –