سلام
اول سئوال دومت: عبارت درست رو در زیر آورده ام (علامت > باید به مساوی تبدیل بشه یعنی)
if ( e.Node.Checked == false && e.Node.GetNodeCount(true) == 0 )
اما در مورد اول هم می تونی از تابع زیر استفاده کنی :
private void button6_Click(object sender, EventArgs e)
{
try
{
ChangeCheckTreeView(treeView1, "1\\", true);
ChangeCheckTreeView(treeView1, "1\\2\\0", true);
ChangeCheckTreeView(treeView1, "2\\0\\", true);
}
catch (Exception exc)
{
MessageBox.Show(exc.Message,"",MessageBoxButtons.O K,MessageBoxIcon.Error);
}
}
private void ChangeCheckTreeView(TreeView tv, string sPath, bool bCheck)
{
string[] str = sPath.Split(new char[]{'/','\\'});
if(str.Length < 1 )
throw new Exception("Please inset path like 0/1/2");
TreeNode nod;
int i = 1,j,k;
try
{
nod = tv.Nodes[Int32.Parse(str[0])];
while (nod != null && str.Length > i && str[i]!="")
{
k = Int32.Parse(str[i]);
nod = nod.FirstNode;
for (j = 0; j < k; j++)
nod = nod.NextNode;
i++;
}
}
catch(Exception e)
{
throw new Exception(
string.Format("Error in node {0} in deep {1} \n {2}", str[i], i, e.Message));
}
if(nod==null)
throw new Exception("Node not available");
nod.Checked = bCHeck;
}
البته اینها یک پیشنهاده و شاید راه بهنری هم باشد.
موفق باشید