メインフォームの一部であるtabControlのtabPage内にtreeViewがあるac#Windowsフォームアプリケーションがあります。
ツリー ビューの場合、選択したい treeView のアイテムをクリックすると、選択したアイテムに基づいて変更が発生します。
アイテムの選択には AfterSelect イベントを使用し、選択を元に戻すには mouseUp イベントを使用しています。
アイテムの選択と選択解除は、1 回のクリックですぐに行われます (問題ありません)。選択したアイテムに基づいて発生する必要がある他の変更は、2 回のクリック後に発生します。項目ノードまたはノードの領域外のいずれかを 1 回クリックしても、この変更はトリガーされません。変更を確認するには、もう一度クリックする必要があります。それは有線です。私はマウスのダブル クリック イベントをこれまたは類似のものに使用していません。上で説明したイベントのみを使用しています。
これはどのように起こりますか?およびそれを解決する方法は? ありがとう。
編集:私はtreeViewの独自の複数選択バージョンを使用しており、(デバッグを使用して)最初のクリック後にAfterSelectイベントでツリーの選択されたノードを取得すると、それは選択されたノードの数であることがわかりました2回目のクリックで。treeView のオーバーライドされた OnAfterSelect イベントでクリックするたびに、選択したノードが追加され、現在の selectedNodes リストに追加されると、なぜこれが起こるのでしょうか?
ツリー ビュー コードの一部を次に示します。
public List<TreeNode> SelectedNodes
{
get
{
return selectedNodes;
}
set
{
removeSelectionFromNodes();
selectedNodes = value;
selectNodes();
}
}
protected override void OnAfterSelect(TreeViewEventArgs e)
{
base.OnAfterSelect(e);
base.SelectedNode = null;
List<MSTreeNode> nodes = new List<MSTreeNode>();
.
.
.
removeSelectionFromNodes();
selectedNodes.Clear();
selectedNodes.AddRange(nodes);
selectNodes();
}