如何在C#中禁用(灰显)三态树视图中的复选框?

如何在C#中禁用(灰显)三态树视图中的复选框?,c#,winforms,checkbox,treeview,C#,Winforms,Checkbox,Treeview,我正在使用从TreeView继承的三态树视图 我很清楚如何将文本灰显: 使用所描述的事件处理程序,我可以轻松地更改ri状态树视图中特定项的文本颜色。但是,如何更改三态树视图中特定复选框的颜色,使其看起来变灰/禁用 请注意,我使用的是来自代码项目的treeview,而不是一般的treeview: 在您的情况下,没有简单/快速的方法,因为树节点没有启用的属性。您必须自己添加此功能。我看了一下三态树视图代码,我可以说几句话来帮助您 绘图部分将很容易,您可以在构造器中找到: case 0: Chec

我正在使用从TreeView继承的三态树视图

我很清楚如何将文本灰显:

使用所描述的事件处理程序,我可以轻松地更改ri状态树视图中特定项的文本颜色。但是,如何更改三态树视图中特定复选框的颜色,使其看起来变灰/禁用

请注意,我使用的是来自代码项目的treeview,而不是一般的treeview:
在您的情况下,没有简单/快速的方法,因为
树节点
没有启用的
属性。您必须自己添加此功能。我看了一下
三态树视图
代码,我可以说几句话来帮助您

绘图部分将很容易,您可以在构造器中找到:

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 | |…)返回但在每种情况下可能都不是那么简单,因此请确保选中每种方法。

您是否可以在选定节点处按此方式设置特定复选框..?您是否可以在选定节点处按此方式设置特定复选框。。?