PDA

View Full Version : treeview شرط



xxxsenatorxxx
دوشنبه 29 اسفند 1390, 22:49 عصر
سلام
یک تری ویو چک باکس دار داریم می خوام یک شرط یزارم که اگر دکمه رو زدیم و هیچ ندی تیک نخورده بود یک پیغام بده.همین
با تشکر

omid_csh
سه شنبه 01 فروردین 1391, 00:12 صبح
سلام

اگه treeview یک سطی باشه اینطوری می تونی هر کدوم از عناصرشو چک کنی


foreach (TreeNode myNode in myTreeView.Nodes)
{
//چک کردن آیتم
if (myNode.Checked)
{

}
else
{
}
}

xxxsenatorxxx
سه شنبه 01 فروردین 1391, 22:49 عصر
سلام

اگه treeview یک سطی باشه اینطوری می تونی هر کدوم از عناصرشو چک کنی


foreach (TreeNode myNode in myTreeView.Nodes)
{
//چک کردن آیتم
if (myNode.Checked)
{

}
else
{
}
}



با تشکر ولی چند سطحیه و در ضمن میشه یه توضیح هم بدید mynode چیه؟شی از تری ویو هست؟ چون تغیرش میدم ارور نمیده؟

omid_csh
سه شنبه 01 فروردین 1391, 22:57 عصر
چند تا سطح داره؟

mynode یه نمونه از کلاس TreeNode هستش که تو هر بار اجرای حلقه یکی از گره های تری ویو هستش

xxxsenatorxxx
سه شنبه 01 فروردین 1391, 23:09 عصر
چند تا سطح داره؟

mynode یه نمونه از کلاس TreeNode هستش که تو هر بار اجرای حلقه یکی از گره های تری ویو هستش

بیشتر از 6 یا 7 .میشه تابینهایت تعریف کرد؟اگر نمیشه رو همون 7 باشه ممنون میشم

omid_csh
سه شنبه 01 فروردین 1391, 23:27 عصر
باید بصورت بازگشتی بنویسی
حالا باید تابع CallRecursive رو فراخونی کنی

private void PrintRecursive(TreeNode treeNode)
{
// Print the node.
System.Diagnostics.Debug.WriteLine(treeNode.Text);
MessageBox.Show(treeNode.Text);
// Print each node recursively.
foreach (TreeNode tn in treeNode.Nodes)
{
PrintRecursive(tn);
}
}

// Call the procedure using the TreeView.
private void CallRecursive(TreeView treeView)
{
// Print each node recursively.
TreeNodeCollection nodes = treeView.Nodes;
foreach (TreeNode n in nodes)
{
PrintRecursive(n);
}
}


مرجع http://msdn.microsoft.com/en-us/library/wwc698z7(v=vs.85).aspx

xxxsenatorxxx
سه شنبه 01 فروردین 1391, 23:31 عصر
باید بصورت بازگشتی بنویسی
حالا باید تابع CallRecursive رو فراخونی کنی

private void PrintRecursive(TreeNode treeNode)
{
// Print the node.
System.Diagnostics.Debug.WriteLine(treeNode.Text);
MessageBox.Show(treeNode.Text);
// Print each node recursively.
foreach (TreeNode tn in treeNode.Nodes)
{
PrintRecursive(tn);
}
}

// Call the procedure using the TreeView.
private void CallRecursive(TreeView treeView)
{
// Print each node recursively.
TreeNodeCollection nodes = treeView.Nodes;
foreach (TreeNode n in nodes)
{
PrintRecursive(n);
}
}


مرجع http://msdn.microsoft.com/en-us/library/wwc698z7(v=vs.85).aspx

میشه کد بازگشتی رو هم بزارید من تازه کارم

omid_csh
سه شنبه 01 فروردین 1391, 23:49 عصر
تابع CallRecursive همون تابع بازگشتی هستش دیگه

xxxsenatorxxx
شنبه 05 فروردین 1391, 23:04 عصر
تابع CallRecursive همون تابع بازگشتی هستش دیگه
سلام
اقا از اون روز من دارم با کدتون ور میرم ولی به اون چیزی که میخوام نرسیدم
نهایت چیزی که میده اینه که اسم تمام شاخه ها و زیر شاخه ها تو مسیج باکس نمایش داده میشه
من تابع رو تعریف کردم ولی تو باتن چی بزارم که با زدنش اگر هیچ شاخه تیک نخروده پیغام بده
تورو خدا یه کد بده که تو باتن بزارم حل شه.ترکیدم از بس نشد:گریه:
ممنون

C#.net
یک شنبه 06 فروردین 1391, 00:15 صبح
از این استفاده کنید:


private void button1_Click(object sender, EventArgs e)
{
if (CheckTree(treeView1.Nodes))
MessageBox.Show("Thanks!");
else
MessageBox.Show("Please select a node");
}

private bool CheckTree(TreeNodeCollection nodes)
{
foreach (TreeNode node in nodes)
{
if (node.Checked) return true;
if (CheckTree(node.Nodes)) return true;
}
return false;
}