PDA

View Full Version : استفاده از treeView



hamix666
یک شنبه 13 اسفند 1396, 01:13 صبح
با سلام
من در پروژه خودم از treeview استفاده کردم
یک مشکلی دارم
فرض کنید من یک درختواره دارم
یک نود رو انتخاب مب کنم و میخوام:
اولا آی دی نود رو بهم بده
دوما تمام نود هایی که اکستند شدن رو به صورت دخیره داشته باشه تا وقتی که رگورد جدید رو خاستیم اضافه کنیم و وقتی که درختواره یک بار پاک شود و مجدد پر شود و تمام اکستند ها دقیاقا رو چوری می تونم رش یخقخسف هم خرق نزده
ممنون

Mahmoud.Afrad
سه شنبه 22 اسفند 1396, 02:55 صبح
برای سوال اول
بدست آوردن ID مربوط به Nodeهای TreeView (http://barnamenevis.org/showthread.php?506787-بدست-آوردن-ID-مربوط-به-Nodeهای-TreeView)


برای سوال دوم هم نیازی به حذف و ایجاد کل گره ها نیست ، کافیه از رویداد مناسب استفاده کنید.

hamix666
سه شنبه 22 اسفند 1396, 09:45 صبح
یعنی چی از رویداد مناسب استفاده کنم؟

Mahmoud.Afrad
سه شنبه 22 اسفند 1396, 12:17 عصر
لینک زیر ، رویداد MouseUp مهم هست.
https://support.microsoft.com/en-us/help/810001/how-to-display-a-context-menu-that-is-specific-to-a-selected-treeview

hamix666
چهارشنبه 23 اسفند 1396, 14:03 عصر
بازم نشد ببنید من اینو میخوام وقتی یک نود رو ویرایش می کنم وقتی ثبت شد درخت رفرش بشه و بعدش دوباره همون نوئ انتخاب بشه و اکسپند باشه

رامین مرادی
چهارشنبه 23 اسفند 1396, 15:41 عصر
بازم نشد ببنید من اینو میخوام وقتی یک نود رو ویرایش می کنم وقتی ثبت شد درخت رفرش بشه و بعدش دوباره همون نوئ انتخاب بشه و اکسپند باشه

شما موقع ویرایش آی دی یا نام نود رو در اختیار دارید .یه جا نگه داری کنید.
بعد رفرش درخت رو پیمایش کنید.اگه نود با نود شما یکسان بود اونو اکسپند کنید.

hamix666
پنج شنبه 24 اسفند 1396, 07:23 صبح
شما موقع ویرایش آی دی یا نام نود رو در اختیار دارید .یه جا نگه داری کنید.
بعد رفرش درخت رو پیمایش کنید.اگه نود با نود شما یکسان بود اونو اکسپند کنید.
این کار رو کردم ولی چون درخت رو پاک میکنم و دوباره می سازم fullpacth رو نمی شناسه و selectnode نمی شه
درخت من چند سطح دارد مثلا یک گره شاید 2 سطح داشته باشد و یک گره 10 سطح با forech هم نشد چون تعداد سطح ها مشخص نیست

رامین مرادی
پنج شنبه 24 اسفند 1396, 08:34 صبح
این کار رو کردم ولی چون درخت رو پاک میکنم و دوباره می سازم fullpacth رو نمی شناسه و selectnode نمی شه
درخت من چند سطح دارد مثلا یک گره شاید 2 سطح داشته باشد و یک گره 10 سطح با forech هم نشد چون تعداد سطح ها مشخص نیست

در اینجور مواقع باید از توایع بازگشتی استفاده کنید.
این تابع یه ساختار درختی میگیره با یه رشته و اونو سرچ میکنه اگه تگ نود برابر بود با رشته اون نود رو برمیگردونه.یه کم با این تابع کار کنید روال کار میاد دستتون



public TreeNode SearchTree(TreeNodeCollection nodes, string searchtext)
{
foreach(TreeNode node in nodes)
{
if(node.Tag as string == searchtext)
{
return node;
}
SearchTree(node.Nodes, searchtext);
}
}



اینم نحوه استفادشه.



TreeNode tn = SearchTree( MyTreeView.Nodes, MySearchString);

hamix666
چهارشنبه 08 فروردین 1397, 13:26 عصر
در اینجور مواقع باید از توایع بازگشتی استفاده کنید.
این تابع یه ساختار درختی میگیره با یه رشته و اونو سرچ میکنه اگه تگ نود برابر بود با رشته اون نود رو برمیگردونه.یه کم با این تابع کار کنید روال کار میاد دستتون



public TreeNode SearchTree(TreeNodeCollection nodes, string searchtext)
{
foreach(TreeNode node in nodes)
{
if(node.Tag as string == searchtext)
{
return node;
}
SearchTree(node.Nodes, searchtext);
}
}



اینم نحوه استفادشه.



TreeNode tn = SearchTree( MyTreeView.Nodes, MySearchString);


مرسی جواب داد

sg.programmer
پنج شنبه 09 فروردین 1397, 11:22 صبح
یک سوال
چطور میشه وقتی روی نود دابل کلیک کردم تمام زیر مجموعه اش سلکت و آن سلکت بشن؟

رامین مرادی
پنج شنبه 09 فروردین 1397, 12:31 عصر
یک سوال
چطور میشه وقتی روی نود دابل کلیک کردم تمام زیر مجموعه اش سلکت و آن سلکت بشن؟

همین تابع بازگشتی رو رو نود اجرا کنید و داخلش تیک بزنید یا تیکو بردارید