PDA

View Full Version : انتخاب فقط یک node در treeview



mojtaheri
دوشنبه 16 خرداد 1390, 09:39 صبح
سلام من در یک treeview می خوام فقط یک node در هر لحظه تیک بخوره.چه کار باید بکنم؟

mojtaheri
دوشنبه 16 خرداد 1390, 10:41 صبح
کسی نمدونه چه کار باید کرد

محمد باقری نسب
دوشنبه 16 خرداد 1390, 11:23 صبح
دوست عزیز لطفا نوع پروژه به همراه زبانی که با آن مینویسید را ذکر کنید. و منظور خود را از اینکه فقط یک node تیک بخوره را واضح تر بیان کنید. مگر در حالت عادی چگونه است؟

mojtaheri
دوشنبه 16 خرداد 1390, 11:30 صبح
ممنون از شما
ببینید من میخوام توی سی شارپ از یک لیست درختی استفاده کنم که توی اون کاربر فقط بتونه یک node از اون رو انتخاب کنه اکه روی یک نود دیگه تیک زد نود قبلی که تیک داشت دیگه نداشته باشه.

محمد باقری نسب
دوشنبه 16 خرداد 1390, 12:24 عصر
رویه ی Event از خصوصیات TreeView را با نام BeforeCheck پیاده سازی کنید و در داخل آن کد زیر را وارد نمایید:


//جهت چک کردن مد انتخاب که آیا از طریق انتخاب کاربر است و یا از طریق برنامه نویسی
if (e.Action == TreeViewAction.Unknown)
return;

TreeNode n = e.Node.Parent;
if (n == null)
{
foreach (TreeNode nd in treeView1.Nodes)
{
nd.Checked = false;
}
}
else
{
foreach (TreeNode nd in n.Nodes)
{
nd.Checked = false;
}
}

این کد node هایی را که در سطح مشترکی هستند چک میکند.

mojtaheri
دوشنبه 16 خرداد 1390, 12:34 عصر
ممنون چک میکنم ببینم درست یا نه؟

mojtaheri
دوشنبه 16 خرداد 1390, 12:46 عصر
من اینطوری درستش کردم
private void treeView1_AfterCheck(object sender, TreeViewEventArgs e)
{
if (e.Action != TreeViewAction.Unknown)
{
string s = e.Node.Text;
if (e.Node.Level != 0)
{
for (int i = 0; i < e.Node.Parent.Nodes.Count; i++)
{
if (e.Node.Parent.Nodes[i].Text != s)
{
e.Node.Parent.Nodes[i].Checked = false;
}
}
}
else
{
e.Node.Checked = false;
}
}

}