如何在C#中禁用(灰显)三态树视图中的复选框?
我正在使用从TreeView继承的三态树视图 我很清楚如何将文本灰显: 使用所描述的事件处理程序,我可以轻松地更改ri状态树视图中特定项的文本颜色。但是,如何更改三态树视图中特定复选框的颜色,使其看起来变灰/禁用 请注意,我使用的是来自代码项目的treeview,而不是一般的treeview:如何在C#中禁用(灰显)三态树视图中的复选框?,c#,winforms,checkbox,treeview,C#,Winforms,Checkbox,Treeview,我正在使用从TreeView继承的三态树视图 我很清楚如何将文本灰显: 使用所描述的事件处理程序,我可以轻松地更改ri状态树视图中特定项的文本颜色。但是,如何更改三态树视图中特定复选框的颜色,使其看起来变灰/禁用 请注意,我使用的是来自代码项目的treeview,而不是一般的treeview: 在您的情况下,没有简单/快速的方法,因为树节点没有启用的属性。您必须自己添加此功能。我看了一下三态树视图代码,我可以说几句话来帮助您 绘图部分将很容易,您可以在构造器中找到: case 0: Chec
在您的情况下,没有简单/快速的方法,因为
树节点
没有启用的属性。您必须自己添加此功能。我看了一下三态树视图
代码,我可以说几句话来帮助您
绘图部分将很容易,您可以在构造器中找到:
case 0: CheckBoxRenderer.DrawCheckBox(chkGraphics, new Point(0, 1), CheckBoxState.UncheckedNormal);
break;
case 1: CheckBoxRenderer.DrawCheckBox(chkGraphics, new Point(0, 1), CheckBoxState.CheckedNormal);
break;
case 2: CheckBoxRenderer.DrawCheckBox(chkGraphics, new Point(0, 1), CheckBoxState.MixedNormal);
break;
此部分填充将存储每个可能状态的位图的stateMageList
。您需要添加已存在于System.Windows.Forms.VisualStyles
中的其他三张图片:CheckBoxState.UncheckedDisabled
、CheckBoxState.CheckedDisabled
和CheckBoxState.MixedDisabled
然后,当您想影响节点的CheckedDisabled
外观时,您需要更改TreeNode
属性的stateMageIndex
,如下myNode.stateMageIndex=(int)CheckedState.CheckedDisabled代码>
更复杂的部分是逻辑的实现。TriStateTreeView
仅覆盖Windows.Forms.TreeView
中的五个事件,您需要更改它们以处理新功能。您可能需要在顶部添加类似的内容:
if(e.Node.stateMageIndex==(int)CheckedState.CheckedDisabled | |…)返回
但并非在每种情况下都那么简单,因此请确保检查每种方法。在您的情况下,没有简单/快速的方法,因为树节点
没有启用的属性。您必须自己添加此功能。我看了一下三态树视图
代码,我可以说几句话来帮助您
绘图部分将很容易,您可以在构造器中找到:
case 0: CheckBoxRenderer.DrawCheckBox(chkGraphics, new Point(0, 1), CheckBoxState.UncheckedNormal);
break;
case 1: CheckBoxRenderer.DrawCheckBox(chkGraphics, new Point(0, 1), CheckBoxState.CheckedNormal);
break;
case 2: CheckBoxRenderer.DrawCheckBox(chkGraphics, new Point(0, 1), CheckBoxState.MixedNormal);
break;
此部分填充将存储每个可能状态的位图的stateMageList
。您需要添加已存在于System.Windows.Forms.VisualStyles
中的其他三张图片:CheckBoxState.UncheckedDisabled
、CheckBoxState.CheckedDisabled
和CheckBoxState.MixedDisabled
然后,当您想影响节点的CheckedDisabled
外观时,您需要更改TreeNode
属性的stateMageIndex
,如下myNode.stateMageIndex=(int)CheckedState.CheckedDisabled代码>
更复杂的部分是逻辑的实现。TriStateTreeView
仅覆盖Windows.Forms.TreeView
中的五个事件,您需要更改它们以处理新功能。您可能需要在顶部添加类似的内容:
if(e.Node.stateMageIndex==(int)CheckedState.CheckedDisabled | |…)返回代码>但在每种情况下可能都不是那么简单,因此请确保选中每种方法。您是否可以在选定节点处按此方式设置特定复选框..?您是否可以在选定节点处按此方式设置特定复选框。。?