如何 treeview 选中后光标移走还是选中状态。 如何选中 treeview 一个节点后光标移走点按钮, 那个节点还是显示成选中的那种状态。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 treeView1.HideSelection = false; 我做的项目中也没处理,这是WINDOWS控件的标准处理方法,没必要在这上面多费时间。 可以动态设置一下:treeView1.SelectedNode.ForeColor = Color.Black;treeView1.SelectedNode.BackColor = Color.Blue; 用DrawNode自己画.private void treeView1_DrawNode(object sender, DrawTreeNodeEventArgs e) { if (e.State == TreeNodeStates.Selected) { e.Graphics.FillRectangle(new SolidBrush(SystemColors.ActiveCaption), e.Bounds); e.Graphics.DrawString(e.Node.Text, this.Font, Brushes.White, e.Bounds); } else e.DrawDefault = true;//设置: this.treeView1.DrawMode = System.Windows.Forms.TreeViewDrawMode.OwnerDrawText; this.treeView1.HideSelection = false; } 我试了下,完全符合你的要求,虽然失去焦点了,但看起来还是选择的样子:TreeNode node = null;//全局变量,保存TreeView当前节点 private void treeView1_AfterSelect(object sender, TreeViewEventArgs e) { if (node != null) { node.BackColor = SystemColors.Window;//上次选择的节点恢复到默认背景色 } e.Node.BackColor = SystemColors.ActiveCaption;//当前选择的节点激活背景色 node = e.Node;//更新当前节点 }上面的颜色我是用的Windows的默认值,你可以改成自己的 上面,是这个问题最最合理、最简单的设置。选中项颜色变暗,是有含义的.表示当前控件不是输入焦点了,不会响应按键事件。当然,可以用设置背景、重画等多种方法任意改变选中后的状态。这样会带来许多副作用:(1)分不清控件焦点,不符合Windows操作者的习惯,不符合Windows开发标准。 参考:资源管理器(2)降低控件效率,节点多的时候影响更大。(3)如果许多控件照此处理,会多出许多无价值的代码行,增加软件维护成本。 .HideSelection = false;即可! 一个关于编码的问题??? DataTable Copy columns 首页图片显示不出来 有对c# XtraGrid suite控件包熟悉的吗?用过的请进来指点指点。 我以前学的是PHP,现在想转JAVA、C#了,但是没有决定好选哪个,请大家帮我解除心中的疑惑! C#笔试题,高分求教,求好心人帮忙!!!! 如何把CAD的dwg文件转换成jpg格式? 请问大家,关于C# MTP的问题???(解决给分) 问题一个 关于Process.Start("command.com","dir")的问题??? asp.net网站与c#应用程序之间如何通讯? 网站登入界面设计问题,PSD转成HTML
我做的项目中也没处理,这是WINDOWS控件的标准处理方法,没必要在这上面多费时间。
可以动态设置一下:
treeView1.SelectedNode.ForeColor = Color.Black;
treeView1.SelectedNode.BackColor = Color.Blue;
{ if (e.State == TreeNodeStates.Selected)
{
e.Graphics.FillRectangle(new SolidBrush(SystemColors.ActiveCaption), e.Bounds);
e.Graphics.DrawString(e.Node.Text, this.Font, Brushes.White, e.Bounds);
}
else
e.DrawDefault = true;//
设置:
this.treeView1.DrawMode = System.Windows.Forms.TreeViewDrawMode.OwnerDrawText;
this.treeView1.HideSelection = false;
}
private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
{
if (node != null)
{
node.BackColor = SystemColors.Window;//上次选择的节点恢复到默认背景色
}
e.Node.BackColor = SystemColors.ActiveCaption;//当前选择的节点激活背景色
node = e.Node;//更新当前节点
}上面的颜色我是用的Windows的默认值,你可以改成自己的
(1)分不清控件焦点,不符合Windows操作者的习惯,不符合Windows开发标准。 参考:资源管理器
(2)降低控件效率,节点多的时候影响更大。
(3)如果许多控件照此处理,会多出许多无价值的代码行,增加软件维护成本。