سؤال

كيف يمكن للمرء إدراج طفل جديد إلى عقدة معينة في TreeView في C# winforms؟

لقد طعنت بشكل خرقاء في TreeViews لمدة ساعة تقريبًا وأرغب في استخدام TreeView من C#مثل هذا:

treeView.getChildByName("bob").AddChild(new Node("bob's dog"));

إليك ما جربته أخيرًا (والذي أعتقد أنه على مستوى من الشعر الذي لم يكن يجب أن يسمح لي بالوصول إلى):

tree.Nodes[item.name].Nodes.Add(new TreeNode("thing"));

وغني عن القول ، إنه لا يعمل.

أوه ، وهنا سؤال كسول: هل يمكنك بالفعل تخزين الكائنات في هذه العقد؟ أم أن Treenode يدعم السلاسل فقط وما إلى ذلك؟ (في هذه الحالة يجب أن أمتد treenode .. /تنهد)

الرجاء المساعدة ، شكرا!

هل كانت مفيدة؟

المحلول

في الواقع ، يجب أن يعمل الرمز الخاص بك - من أجل إضافة عقدة فرعية عليك القيام بها فقط:

myNode.Nodes.Add(new TreeNode("Sub node"));

ربما تكون المشكلة في طريقة الرجوع إلى العقد الموجودة لديك. أنا أظن أن الشجرة.

لكي يجد هذا المفهرس العقدة ، تحتاج إلى تحديد مفتاح عند إضافة العقدة. هل حددت اسم العقدة كمفتاح؟ على سبيل المثال ، الرمز التالي يعمل بالنسبة لي:

treeView1.Nodes.Add("key", "root");
treeView1.Nodes["key"].Nodes.Add(new TreeNode("Sub node"));

إذا لم تنجح إجابتي ، فهل يمكنك إضافة المزيد من التفاصيل حول ماذا يحدث؟ هل حصلت على بعض الاستثناء أم لم يحدث شيء ببساطة؟

PS: من أجل تخزين كائن في عقدة ، بدلاً من استخدام خاصية TAG ، يمكنك أيضًا استخلاص فئة خاصة بك من TreeNode وتخزين أي شيء فيه. إذا كنت تقوم بتطوير مكتبة ، فهذا أكثر فائدة لأنك تترك خاصية العلامة لاستخدامها.

جرى

نصائح أخرى

يمكنك استخدام إدراج بدلاً من إضافة.

tree.Nodes[item.name].Nodes.Insert(2, (new TreeNode("thing")));

حسنًا ، للبدء ، نعم يمكنك تخزين الكائنات في كل عقدة. كل عقدة لديها ملف Tag خاصية النوع object.

يجب أن تكون إضافة العقد واضحة إلى حد ما. وفق MSDN:

// Adds new node as a child node of the currently selected node.
TreeNode newNode = new TreeNode("Text for new node");
treeView1.SelectedNode.Nodes.Add(newNode);

وإلا إذا لم يكن دافيتا هو الإجابة المثالية ، فأنت بحاجة إلى الاحتفاظ بالإشارة إلى العقد ، لذلك إذا كان لديك إشارة إلى بوب ، فيمكنك إضافة كلب بوب

Treenode Bob = treenode new ("bob") ؛ TreeView1.Nodes.Add (Bob) ؛ bob.nodes.add (New Treenode ("Dog")) ؛

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top