从选中的节点向上遍历父节点,如果父节点不是treeView.TopNode就记录父节点的所以,或者对他做处理!获取父节点的所以用:trvItem.SelectedNode.Parent.Index
解决方案 »
- 用datagridview来做查询遇到问题了,寻求指导
- Sql导出Excel的两个问题~~~高手请进,------------!
- 多次替换转义字符有无简便方法?
- serialport收到重复数据
- combobox的未将对象的引用设置到对象的实例错误
- 如何用C#删除掉ftp服务器上的目录?
- ---各位大侠--在下有事相求---有没有asp.net开发支持多语言的站点文章(例如:一个网站的聊天室.不论用哪个国家的语言来发表.都不会现乱码)
- UltraEdit怎么发音?
- 关于RemoteObject的疑惑,希高手给予指点。
- 数据库连接问题,在线等待(一定给分)
- 在线等~~一个菜鸟的新问题:怎样通过DropDownList和Image显示图片
- 怎么能实现在以生成的rpt的报表中实现随机的查询!!!各位兄弟帮帮忙,憋了好几天的也没有实现,急死了
{
if(node.parent!=null)
{
node=node.parent;
//添加你的想要得到结果的操作
.
.
.
GetParent(node);
}
}
treeView1.SelectedNode.Parent是否为null.
让此节点自动的选中(或取消选中)??高手帮帮忙! 急!!!!!!!
写的不好,希望高手改进,但是,结果肯定是正确的
#region 判断节点选中情况
private void ChkNode(TreeNode node)
{
//如果CheckBox为真
if(node.Checked==true)
{
//设置子节点的CheckBox为真
if(node.Nodes.Count>0)
{
foreach(TreeNode nodeChild in node.Nodes)
{
nodeChild.Checked=true; //递归遍历
ChkNode(nodeChild);
}
}
//如果存在的父节点是大于树的第一层,设置父节点的CheckBox为真
if(IsMoreThanFirstLayer(GetNodeIndex(node.GetNodeIndex())))
{
if((node=tvwPower.GetNodeFromIndex(GetNodeIndex(node.GetNodeIndex())))!=null)
{
//调用函数
ChkParentT(node);
}
}
}
else if(node.Checked==false)
{
//设置子节点的CheckBox为假
if(node.Nodes.Count>0)
{
foreach(TreeNode nodeChild in node.Nodes)
{
nodeChild.Checked=false; //递归遍历
ChkNode(nodeChild);
}
}
//如果存在的父节点是大于树的第一层,设置父节点的CheckBox为假
if(IsMoreThanFirstLayer(GetNodeIndex(node.GetNodeIndex())))
{
if((node=tvwPower.GetNodeFromIndex(GetNodeIndex(node.GetNodeIndex())))!=null)
{
//调用函数
ChkParentF(node);
}
}
}
} #endregion #region 判断父节点中的选中CheckBox
private void ChkParentT(TreeNode node)
{
node.Checked=true;
//如果存在的父节点是大于树的第一层
if(IsMoreThanFirstLayer(GetNodeIndex(node.GetNodeIndex())))
{
if((node=tvwPower.GetNodeFromIndex(GetNodeIndex(node.GetNodeIndex())))!=null)
{
//当此节点存在父节点时,递归遍历
ChkParentT(node);
}
}
}
#endregion #region 判断父节点中的不选中CheckBox
private void ChkParentF(TreeNode node)
{
//计数器
int j=0;
foreach(TreeNode nodeChild in node.Nodes)
{
//如果子节点的CheckBox为假,计数器加一
if(nodeChild.Checked==false)
{
j++;
}
if(j==node.Nodes.Count)
{
node.Checked=false;
}
}
//如果存在的父节点是大于树的第一层,则,递归遍历
if(IsMoreThanFirstLayer(GetNodeIndex(node.GetNodeIndex())))
{
if((node=tvwPower.GetNodeFromIndex(GetNodeIndex(node.GetNodeIndex())))!=null)
{
ChkParentF(node);
}
}
}
#endregion #region 得到当前节点的父节点的索引
/// <summary>
/// 得到当前节点的父节点的索引
/// </summary>
/// <param name="strIndex">当前节点的索引</param>
/// <returns>父节点索引</returns>
private string GetNodeIndex(string strIndex)
{
int i=strIndex.LastIndexOf(".");
string strReturn=strIndex.Substring(0,i);
return strReturn;
}
#endregion #region 判断当前节点是不是在大于树的第一层(即第二、三层......)
/// <summary>
/// 判断当前节点是不是在大于树的第一层(即第二、三层......)
/// </summary>
/// <param name="strIndex">当前节点的索引</param>
/// <returns></returns>
private bool IsMoreThanFirstLayer(string strIndex)
{
int iCount=0;
int iTemp=0;
int i=0;
foreach(char chr in strIndex)
{
if(chr=='.')
{
iCount=iCount+1;
if(iCount==1)
{
iTemp=i;
}
}
i++;
}
if(iTemp>0)
{
return true;
}
else
{
return false;
}
}
#endregion
你说的:在winform中我是用贴图的方法解决的
如何使用??