社区
C#
帖子详情
100分求助,怎么使WinForm的TreeView上checkBox变灰?
lasse
2005-01-23 04:48:12
当子节点的checkbox不是所有的勾都打上,那么父节点的框应该勾上,但框是灰色的。就象安装/删除Windows组件一样,组件里的内容没全选,显示的效果为灰。
TreeView的checked属性不是true就是false,好像没第三种状态。
...全文
294
17
打赏
收藏
100分求助,怎么使WinForm的TreeView上checkBox变灰?
当子节点的checkbox不是所有的勾都打上,那么父节点的框应该勾上,但框是灰色的。就象安装/删除Windows组件一样,组件里的内容没全选,显示的效果为灰。 TreeView的checked属性不是true就是false,好像没第三种状态。
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
17 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
longqiaoman
2005-01-24
打赏
举报
回复
50元注册费,终身免费升级!
lasse
2005-01-24
打赏
举报
回复
随便问一下,龙桥人的东东多少钱?
酸酸甜甜就是我啊
2005-01-24
打赏
举报
回复
卖瓜卖到这里来了
longqiaoman
2005-01-24
打赏
举报
回复
http://www.jiabaili.com/mp3/TreeView.rar
这个绝对满足你的需求
心情解码
2005-01-24
打赏
举报
回复
:)
--
isaacyh
2005-01-24
打赏
举报
回复
step2:在每次得到每个item的属性后对item进行重绘。
还要注意每个item改变时对其父节点和子节点的影响。就是说你还要改写系统的一些处理代码。。。
算了,不是一下子说得清楚的,你先去www.codeproject.com上去看看的说。应该可以找到这样的代码的。。。。
isaacyh
2005-01-24
打赏
举报
回复
你要的效果要自己写的,TreeView没有提供这种东东,你可以继承于TreeView自己写一个:
step1:
增加CheckState属性和改写Checked属性。例如:
#region CheckStatus
/// <summary>
/// Gets the check state of this item
/// </summary>
public CheckState CheckStatus
{
get
{
if(items.Count <= 0)
{
if(this.Checked)
return CheckState.Checked;
else
return CheckState.Unchecked;
}
else
{
bool allChecked = true;
bool allUnChecked = true;
TreeViewItem[] tempitems = Items.ToArray();
foreach(TreeViewItem item in tempitems)
{
if (item.CheckStatus == CheckState.Indeterminate)
return CheckState.Indeterminate;
else if (item.CheckStatus == CheckState.Checked)
allUnChecked = false;
else
allChecked = false;
}
if (allChecked)
return CheckState.Checked;
else if (allUnChecked)
return CheckState.Unchecked;
else
return CheckState.Indeterminate;
}
}
}
#endregion
#region Checked
/// <summary>
/// Gets or sets a value indicating whether the item is checked.
/// </summary>
public new bool Checked
{
get
{
try
{
return (base.Checked);
}
catch
{
return false;
}
}
set
{
if(IsInATreeView)
if(TreeListView.InvokeRequired)
throw(new Exception("Invoke required"));
try
{
// Check downwards recursively
if(TreeView != null &&
TreeView.checkDirection == CheckDirection.Downwards &&
items.Count > 0)
{
foreach(TreeViewItem childItem in items)
childItem.Checked = value;
}
if(base.Checked == value) return;
base.Checked = value;
}
catch{}
}
}
#endregion
isaacyh
2005-01-24
打赏
举报
回复
CheckState.Indeterminate表示灰色。。。。
ld_thinking
2005-01-24
打赏
举报
回复
inhernit属性? 记得不是特别清楚了 checkbox的一客户端属性
yangao
2005-01-24
打赏
举报
回复
不会,帮顶
liulxmooo
2005-01-24
打赏
举报
回复
up
yiyi0518
2005-01-24
打赏
举报
回复
帮忙up,顺便学习!!
lasse
2005-01-23
打赏
举报
回复
自己UP一下
tmp1804
2005-01-23
打赏
举报
回复
up
gyf19
2005-01-23
打赏
举报
回复
学习。。。
YIO2002
2005-01-23
打赏
举报
回复
这好象没有哦,DataGrid中的checkbox就有这中状态也就是空状态
DeltaCat
2005-01-23
打赏
举报
回复
帮你UP
C#
winform
TreeView
中关于
checkbox
选择的完美类
自己写的代码示例,保证可用,入股有什么问题
C# 解决双击
TreeView
表里
checkbox
本身Bug问题
一个
WinForm
的
TreeView
,某node的
CheckBox
初始状态为false,当双击这个node的
checkbox
时,会出现很奇怪的情况: 第一次双击
checkbox
,
checkbox
显示的状态会切换两次状态,unchecked-> checked-> unchecked,而AfterCheck事件仅触发一次,在AfterCheck事件中获取到的
checkbox
状态为checked。在这里
checkbox
状态已经和显示状态不一致了 以后每次双击,
checkbox
显示的状态会出现一次切换,AfterCheck也会触发一次,并且
checkbox
显示的状态和值的状态仍然保持相反。 除上面这个问题外,还有一点,当双击
treeview
的
checkbox
后,如果再去单击或双击该界面中除这个
treeview
外的任何部
分
,系统会忽略第一次点击事件。举例来说,一个窗口中,有一个
treeview
,还有一个ok按钮,当我双击这个
treeview
的一个
checkbox
后,再去点那个ok按钮,第一次点击是没有任何作用的,第二次以及以后的点击才会有效,包括点击最大化,最小化,以及关闭这种系统按钮。 为了解决以上问题,我重写了
TreeView
控件,在不影响其它地方的前提下,能很好的解决以上问题。我的环境:.Net framework4.0 + VS2005 + Win7 编译通过,并付执行程序。-
Winform
中
TreeView
中部
分
节点前面的
CheckBox
隐藏
Winform
中
TreeView
中部
分
节点前面的
CheckBox
隐藏
C#树形菜单的
CheckBox
级联选择
实现树形结构的
CheckBox
的子节点选中所有父级节点,级联选择功能,内有具体案例
C#
TreeView
Checkbox
部
分
选中状态,点击节点选中状态不会改变
实现
Treeview
Checkbox
的三种状态,
分
别是:选中、没有选中、部
分
选中。之前有人写了一部
分
实现
Treeview
Checkbox
第三种状态的代码,但是在点击节点前的“+”或者“-”的时候,也会改变这个节点及其子节点的选中状态。这里主要针对这个问题进行了修改。 编译环境:vs2012
C#
111,092
社区成员
642,554
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章