100分求助,怎么使WinForm的TreeView上checkBox变灰?

lasse 2005-01-23 04:48:12
当子节点的checkbox不是所有的勾都打上,那么父节点的框应该勾上,但框是灰色的。就象安装/删除Windows组件一样,组件里的内容没全选,显示的效果为灰。

TreeView的checked属性不是true就是false,好像没第三种状态。
...全文
291 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
longqiaoman 2005-01-24
  • 打赏
  • 举报
回复
50元注册费,终身免费升级!
lasse 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

110,577

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧