TreeView控件如何取消已选中的项?SelectedNode根本没用!! TreeView控件默认会选中第一项--只要TreeView控件获得焦点(不论是否点击的是其中节点,还是空白处),都会有节点被选中。我希望点击TreeView控件的空白处时,不要选中第一项,请问各位如何实现啊?? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 private void treeView1_MouseUp(object sender, MouseEventArgs e) { TreeNode selectnode = this.treeView1.GetNodeAt(e.Location); if (selectnode == null) { this.treeView1.SelectedNode = null; } } 楼上的,不行。真怀疑你有没有试过。跟踪代码发现:如果点击的是treeview的空白处MouseUp后,SelectedNode是null了,但一跳出MouseUp事件,SelectedNode马上就恢复为第一项了。 肯定是与treeview默认选择第一项有关--只要treeview得到焦点就会选中第一项。 我试了,没问题.不过一但treeview获取焦点,第一个还是会选中的. private void treeView1_MouseUp(object sender, MouseEventArgs e) { TreeNode selectnode = this.treeView1.GetNodeAt(e.Location); if (selectnode == null) { this.treeView1.SelectedNode = null; } } private void treeView1_BeforeSelect(object sender, TreeViewCancelEventArgs e) { if (e.Action == TreeViewAction.Unknown) e.Cancel = true; }再加一个事件.我试了,可以了.获取焦点后如果原来没有选中则仍没选中.如果在LZ处仍有问题,检查是否有什么事件冲突了.另: 我这是Form的 这样是可以了,真太感谢楼上朋友了,已经困扰我很长时间了!相在带来了另一个小小的问题就是,我本来在AfterSelect事件里有根据点击的节点,显示相应的内容的代码,如果什么节点也没点击,就清空那些内容。现在,如果点空白处AfterSelect就不执行了,这样之前显示的内容不能清空!有好办法解决吗 private void treeView1_MouseUp(object sender, MouseEventArgs e) { TreeNode selectnode = this.treeView1.GetNodeAt(e.Location); if (selectnode == null) { this.treeView1.SelectedNode = null; //清空内容. } } 给你两个思路吧1、重写treeview代码,就是自定义一个treeview控件,或者从treeview继承一下,修改里面的代码,难度有点高2、你多添加一个空白的节点,不想选择其他的时候,可以让这个空白的节点获得焦点啊,空白的节点,就是没有显示内容的焦点,就是text=“”的焦点,没有试过,LZ可以尝试一下 感谢各位朋友的帮忙我改善了下,不知道会不会有别的问题出现,分享留待观察 bool CancelfterEvent = false; private void treeView1_AfterSelect(object sender, TreeViewEventArgs e) { //设置显示 this.label1.Text = this.treeView1.SelectedNode.Text; } private void treeView1_MouseDown(object sender, MouseEventArgs e) { if (treeView1.GetNodeAt(e.Location) == null) { CancelfterEvent = true; //清除显示 this.label1.Text = ""; } else CancelfterEvent = false; this.treeView1.SelectedNode = treeView1.GetNodeAt(e.Location); } private void treeView1_BeforeSelect(object sender, TreeViewCancelEventArgs e) { e.Cancel = CancelfterEvent; } http://www.soasp.net/FilePage/200803/20080303214457.aspx编程技术资源网为您提供技术支持! 有了.if(TreeView1.SelectedNode!=null) TreeView1.SelectedNode.SelectAction = TreeNodeSelectAction.None; 请高手指教!急用!!!如何用递归实现n个数相加和等于一个固定数,然后把所有符合条件的组合都输出 C#Listview和水晶报表 实例化Excel.Application出错 datagridview 问题 多线程数据库连接问题 在后台取前台Div或Table的innerHTML或innerText问题 关于文件操作~ 为什么用Application.StartupPath就会出错? 急求用c#做的动态演示数据结构系统!!!!!! 有厦门的用C#做开发的朋友么? c#怎么设置excel的格式 C#中如何做主窗口和登录窗口?
{
TreeNode selectnode = this.treeView1.GetNodeAt(e.Location);
if (selectnode == null)
{
this.treeView1.SelectedNode = null;
}
}
如果点击的是treeview的空白处MouseUp后,SelectedNode是null了,
但一跳出MouseUp事件,SelectedNode马上就恢复为第一项了。
private void treeView1_MouseUp(object sender, MouseEventArgs e)
{
TreeNode selectnode = this.treeView1.GetNodeAt(e.Location);
if (selectnode == null)
{
this.treeView1.SelectedNode = null; } } private void treeView1_BeforeSelect(object sender, TreeViewCancelEventArgs e)
{
if (e.Action == TreeViewAction.Unknown)
e.Cancel = true;
}再加一个事件.我试了,可以了.获取焦点后如果原来没有选中则仍没选中.
如果在LZ处仍有问题,检查是否有什么事件冲突了.
另: 我这是Form的
{
TreeNode selectnode = this.treeView1.GetNodeAt(e.Location);
if (selectnode == null)
{
this.treeView1.SelectedNode = null;
//清空内容. } }
1、重写treeview代码,就是自定义一个treeview控件,或者从treeview继承一下,修改里面的代码,难度有点高
2、你多添加一个空白的节点,不想选择其他的时候,可以让这个空白的节点获得焦点啊,空白的节点,就是没有显示内容的焦点,就是text=“”的焦点,没有试过,LZ可以尝试一下
private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
{
//设置显示
this.label1.Text = this.treeView1.SelectedNode.Text;
} private void treeView1_MouseDown(object sender, MouseEventArgs e)
{
if (treeView1.GetNodeAt(e.Location) == null)
{
CancelfterEvent = true;
//清除显示
this.label1.Text = "";
}
else
CancelfterEvent = false;
this.treeView1.SelectedNode = treeView1.GetNodeAt(e.Location);
} private void treeView1_BeforeSelect(object sender, TreeViewCancelEventArgs e)
{
e.Cancel = CancelfterEvent;
}
编程技术资源网为您提供技术支持!
if(TreeView1.SelectedNode!=null)
TreeView1.SelectedNode.SelectAction = TreeNodeSelectAction.None;