概述
这几天碰到一个问题,写winform的时候,给TreeView加了checkbox,但是每次操作某个checkbox的时候,滚动条总会跑到最下面。
想了很多办法,终于找到了一个TreeView的属性--TopNode,这个属性的意思是当前treeview的显示在最上面的node。
还有另外一个方法--EnsureVisible(),用于控制某个node显示在最上面。于是思路有了:每次操作treeview之前先记录TopNode,操作完之后继续将这个topnode置顶。但是还有一个弊端:每次显示的时候总会刷一下。下面是代码:
private
TreeNode
_currentTopNode;
private
void
treeView1_AfterCheck(
object
sender,
TreeViewEventArgs
e)
{
_currentTopNode=
this
.treeView1.TopNode;
InitTreeview();
}
private
void
InitTreeview()
{
if
(_currentTopNode !=
null
)
{
this.treeView1.Nodes[0].Nodes.Cast<TreeNode>().
Where(o => o.Text == _currentTopNode.Text).First().EnsureVisible();
//_currentTopNode.EnsureVisible();不起作用,只有上面这种做法才有效,具体原因我也不清楚。
}
else
{
this.
treeView1.Nodes[0].EnsureVisible();
}
}
转载于:https://blog.51cto.com/2475339/1181265
最后
以上就是紧张老虎为你收集整理的C# Winform TreeView 控制滚动条位置不变的其他解决方法的全部内容,希望文章能够帮你解决C# Winform TreeView 控制滚动条位置不变的其他解决方法所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复