Sae*_*ani 3 c# treeview controls scrollbar winforms
我遇到了TreeView控件的奇怪行为.
如您所见,树视图中的最后一个节点以某种方式隐藏(虽然我可以使用键盘向上/向下箭头键选择它)并且滚动条不会扩展到它.在图片中,您看到的蓝线是隐藏的选定节点,但幸运的是仍然可以看到一些高光!
即使按下pagedown或END键,我也无法选择最后一个节点!
我试图改变树视图控件的高度以匹配节点的高度,但仍然没有成功!我的树视图位于"面板"内.这可能是问题吗?
更新 我没有做一些非凡的事情.我只是在List <>上填充一个循环(使用循环前后的暂停和恢复),然后树形视图将正常填充.
public class MyNode
{
public string Name {get;set;}
public string Result {get;set;}
}
//suspending code here (dont have access to paste it here)
foreach(MyNode node in myNodeList)
{
TreeNode tn = new TreeNode();
tn.Text = node.Name;
tn.Name = node.Result;
treeView.Nodes.Add(tn);
}
////unsuspending code here (dont have access to paste it here)
Run Code Online (Sandbox Code Playgroud)
稍后我允许用户按一个按钮突出显示结果设置为"失败"的节点:
foreach(TreeNode node in treeView.Nodes)
{
if (node.Name.ToString() == "fail") node.BackColor = Color.Red;
}
Run Code Online (Sandbox Code Playgroud)
在此之后,树视图中的最后一个节点将被隐藏!
FIX 我使用了BeginUpdate()和EndUpdate()方法,问题就消失了!
您应该在添加节点之前和之后使用SuspendLayout()和ResumeLayout().这将解决问题.
您可能还希望在ResumeLayout()之后的SuspendLayout()和EndUpdate()之前使用BeginUpdate().
编辑:这是.Net 2.0中的已知问题.禁用视觉样式会有所帮助.如果您不想禁用视觉样式,可以在树的末尾添加一个空节点(当可见树视图控件中有多个适合时).请参阅MS上的问题:https://connect.microsoft.com/VisualStudio/feedback/details/94021/treeview-does-not-display-the-last-node
归档时间: |
|
查看次数: |
2999 次 |
最近记录: |