[解決済み] ツリービューに子ノードを追加する
質問
私はC#の初心者で、プログラミングの経験もありません。しかし、C#の基礎は終了しています。 今、私は親ノードと子ノードを追加することによって、単純なツリービューを設計したいと思います。
2番目のノードに2番目の子供を追加したいのですが、ここでかなり行き詰ってしまい、次にどうすればいいのかわかりません。
何かアイデアはありますか?
以下はそのコードです。
private void addParentNode_Click(object sender, EventArgs e)
{
string yourParentNode;
yourParentNode = textBox1.Text.Trim();
treeView2.Nodes.Add(yourParentNode);
}
private void addChildNode_Click(object sender, EventArgs e)
{
string yourChildNode;
yourChildNode = textBox1.Text.Trim();
treeView2.Nodes[0].Nodes.Add(yourChildNode);
}
すみません、はっきりしなくて、本当にここにこれが必要なのかどうか、よくわからないんです。
//treeView1.BeginUpdate();
//treeView1.Nodes.Clear();
私がやろうとしていることは、親ノードと子ノードを追加することです。私のコードでは、複数の親ノードを追加することができますが、子ノードを追加したい場合は、最初の親ノードにのみ追加されます。 私は、子ノードを追加する場合、私はそれを第二の親または第三の親に追加したいです。
私のコードでは、treeview2という名前の1つのツリービューだけを使用しています。 以下は スクリーンショット
最終的にはこのようなコードになりました。 elseを入れる前に、何も選択しないとエラーになります。そこで、何も選択されていない場合は、"child node" を "default node" または (parent1 node) に追加するようにしたのです。これでうまくいきそうです。ありがとうございます;-)
//This is for adding a parent node
private void addParentNode_Click(object sender, EventArgs e)
{
treeView2.BeginUpdate();
string yourParentNode;
yourParentNode = textBox1.Text.Trim();
treeView2.Nodes.Add(yourParentNode);
treeView2.EndUpdate();
}
//This is for adding child node
private void addChildNode_Click(object sender, EventArgs e)
{
if (treeView2.SelectedNode != null)
{
string yourChildNode;
yourChildNode = textBox1.Text.Trim();
treeView2.SelectedNode.Nodes.Add(yourChildNode);
treeView2.ExpandAll();
}
//This is for adding the child node to the default node(parent 1 node)
else
{
string yourChildNode;
yourChildNode = textBox1.Text.Trim();
treeView2.Nodes[0].Nodes.Add(yourChildNode);
}
追加質問です。このコードをより良くするための他の方法はありますか?なぜなら、ここでは、文字列 "yourChildNode" を2回宣言しているからです。1つはifの中で、もう1つはelseの中で、何か簡略化する方法はありますか?
どのように解決するのですか?
そんなに悪いことではないのですが、あなたが
treeView2.EndUpdate()
の中で
addParentNode_Click()
メソッドを使用します。
を呼び出すこともできます。
treeView2.ExpandAll()
の末尾にある
addChildNode_Click()
メソッドを使用して、子ノードを直接参照することができます。
private void addParentNode_Click(object sender, EventArgs e) {
treeView2.BeginUpdate();
//treeView2.Nodes.Clear();
string yourParentNode;
yourParentNode = textBox1.Text.Trim();
treeView2.Nodes.Add(yourParentNode);
treeView2.EndUpdate();
}
private void addChildNode_Click(object sender, EventArgs e) {
if (treeView2.SelectedNode != null) {
string yourChildNode;
yourChildNode = textBox1.Text.Trim();
treeView2.SelectedNode.Nodes.Add(yourChildNode);
treeView2.ExpandAll();
}
}
ミスかどうかわかりませんが、TreeViewが2つありました。それを1つのTreeViewに変更しました。
EDIT:追加質問の回答です。
子ノード名を保持する変数をif節の外で宣言することができます。
private void addChildNode_Click(object sender, EventArgs e) {
var childNode = textBox1.Text.Trim();
if (!string.IsNullOrEmpty(childNode)) {
TreeNode parentNode = treeView2.SelectedNode ?? treeView2.Nodes[0];
if (parentNode != null) {
parentNode.Nodes.Add(childNode);
treeView2.ExpandAll();
}
}
}
注:以下参照 http://www.yoda.arachsys.com/csharp/csharp2/nullable.html 演算子に関する情報はこちらをご覧ください。
関連
-
[解決済み】C#におけるtypedefの等価性
-
[解決済み】ソケットのアドレス(プロトコル/ネットワークアドレス/ポート)は、通常1つしか使用できない?
-
[解決済み】トランスポート接続からデータを読み取れない:既存の接続は、リモートホストによって強制的に閉じられました。
-
[解決済み】バックスラッシュを含むパス文字列のエスケープシーケンスが認識されない件
-
[解決済み】WPFでXamlファイルにコメントを追加する方法は?
-
[解決済み] [Solved] アセンブリ System.Web.Extensions dll はどこにありますか?
-
[解決済み】2つ(またはそれ以上)のリストを1つに統合する(C# .NETで
-
[解決済み] ...基礎となる接続は閉じられました。予期しないエラーが受信で発生しました
-
[解決済み] 関数を終了するには?
-
[解決済み] なぜList<T>を継承しないのですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】「未割り当てのローカル変数を使用」とはどういう意味ですか?
-
[解決済み] エンティティタイプ ApplicationUser は、現在のコンテキストのモデルの一部ではありません。
-
[解決済み】Ajax処理で「無効なJSONプリミティブ」と表示される件
-
[解決済み】ASP.NET Core Dependency Injectionのエラーです。アクティブ化しようとしているときに、タイプのサービスを解決できません。
-
[解決済み】Sequence contains no matching element(シーケンスにマッチする要素がない
-
[解決済み】ORA-01008: すべての変数がバインドされていません。これらはバインドされています。
-
[解決済み】取り消せないメンバはメソッドのように使えない?
-
[解決済み】MetadataException: 指定されたメタデータ・リソースをロードできない
-
[解決済み] 2つのリストを結合する
-
[解決済み】URLから画像をダウンロードする方法