私はに実際ににしようとしています。 「実際に」とは、TreeView1.SelectedNode = null;
が実際にツリー内のノードを選択解除することを意味します。実際にはTreeView(.NET)内のすべてのノードの選択を解除します
視覚的に言えば、ノードは選択解除されています。しかし、新しいノードを追加しようとすると、ツリービューはツリーの最初のノード(上部)を自動的に選択し、理想的には親ノードを作成したいときにサブノードを作成します。ユーザーが子ノードを追加したい場合があるため、追加する前に選択したノードの選択を解除できません。私が望む動作は、親/子ノードがツリービューで選択されたものに基づいて追加されることです。何も選択されていない場合は、親を追加します。何かが選択されている場合は、その選択されたノードに子を追加します。
は、私がイメージとテキストを持つ関数でnode
と呼ばれる
TreeNode
オブジェクトを構築し、すべてのことは、私は次があります。
if (tvContent.SelectedNode == null)
tvContent.Nodes.Add(node);
else
{
tvContent.SelectedNode.Nodes.Add(node);
tvContent.SelectedNode.Expand();
}
I持って上記のコードを作ることになっているボタン「すべての選択を解除します」作業。そのボタンのコードは単純です:
tvContent.SelectedNode = null;
恩赦私のタギングC#とVB.NETの両方。私は両方の人が好きなので、もし誰かがどちらかの言語で私を助けてくれるのなら、それは素晴らしいだろう!
おかげ
EDIT: 興味深いです。選択されたノードがnullであるかどうかをテストしている間、.NETは自動的に選択されたノードをツリーの最初のノードに設定します。次のコードは、 "トリガー"メッセージボックスを示しますが、if
ステートメントが完了した後、ツリーの最初のノードをすぐに選択します。
private void btnDeselectAll_Click(object sender, EventArgs e)
{
tvContent.SelectedNode = null;
if (tvContent.SelectedNode == null) MessageBox.Show("trigger");
}
EDIT2:この問題は、ノードのタイトル入力用のInputBox関数を使用することにあります。何らかの理由で、ツリービューの選択されたノードが変更されます。私はストックプロジェクトでこれを試し、問題を再現することができました。私はこれを修正するものはないと思う:S
を働いた最初のノードにtvContent.SelectedNodeを変更したコードの行を参照し、その後、右tvContent.SelectedNodeブロックにF11(ステップデバッグバイステップ)でブレークポイントを置きます。 – Martheen
それを変更したコードは見つかりませんでした。正直なところ、それ自体が変更されているようです。 – KingDan
@Martheen投稿を編集してください。これは、ネット内で奇妙な動作であると思われます。 – KingDan