PDA

View Full Version : حرفه ای: پیدا کردن پرنت های فرزند در TreeView



araz_pashazadeh
سه شنبه 28 خرداد 1392, 17:35 عصر
با عرض سلام و خسته نباشید خدمت دوستان
من در TreeView می خوام وقتی روی فرزند کلیک کردن تمامی کیلدهای این فرزند از ریشه تا خود فرزند را به شکل یک رشته بدست بیارم؟
از چه رخدادی باید استفاده کنم؟
و چطوری میشه این کار را انجام داد؟
TreeView فقط یک گره را پشتیبانی می کنه.
ممنون میشم اگه من را راهنمایی کنین.

tooraj_azizi_1035
سه شنبه 28 خرداد 1392, 19:37 عصر
private void GetPathToRoot(TreeNode node, List<TreeNode> path)
{
if(node == null) return; // previous node was the root.
else
{
path.add(node);
GetPathToRoot(node.Parent, path);
}
}

path حاوی همه پدران خواهد بود.

araz_pashazadeh
یک شنبه 02 تیر 1392, 09:45 صبح
راستش من منظور شما را متوجه نشدم به نظر من جواب شما خیلی کلی بود!
من در پیدا کردن پدران مشکل ندارم با استفاده از این تکه کد به راحتی می تونم دسترسی داشته باشم:
TreeNode[] n = TVDetailed.Nodes.Find(e.Node.Name, true);
مشکل من در پیدا کردن کلیدی هستش که در هنگام ساختن TreeView به اون پدر اختصاص دادم
مثلا کلید ریشه 11 ،پدر1 12،پدر2 13و فرزند 14 هستش وقتی می خوام روی فرزند کلیک کردم همه کلیدها از ریشه تا فرزند بصورت یک رشته نمایش داده بشه
مثلا رشته مربوط به کلیدهای بالا به ترتیب 11-12-13-14 هستش.

tooraj_azizi_1035
یک شنبه 02 تیر 1392, 11:12 صبح
همون path که به شما برگشت می ده رو می تونید برای بدست آوردن کلیدها استفاده کنید:
List<TreeNode> list;
GetPathToRoot(TreeView1.SelectedNode, list);
list.Reverse();
string.Join("-", list.Select(x => x.Value.ToString()).ToArray())
درخت رو به اون تابع پس بدید مقدار برگشتی میشه همه گره ها تا ریشه اون رو معکوس کردم تا از ریشه به فرزند شروع به انتخاب خاصیت Value که من فرض کردم کد اون گره رو داره کنه. تست نکردم امتحان کن امیداوارم چیزی باشه که میخوای.