100分求助,怎么使WinForm的TreeView上checkBox变灰? 这好象没有哦,DataGrid中的checkbox就有这中状态也就是空状态 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 inhernit属性? 记得不是特别清楚了 checkbox的一客户端属性 CheckState.Indeterminate表示灰色。 你要的效果要自己写的,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 step2:在每次得到每个item的属性后对item进行重绘。还要注意每个item改变时对其父节点和子节点的影响。就是说你还要改写系统的一些处理代码算了,不是一下子说得清楚的,你先去www.codeproject.com上去看看的说。应该可以找到这样的代码的。 http://www.jiabaili.com/mp3/TreeView.rar这个绝对满足你的需求 c#如何获取URL中#号后面的内容 一句SQL里的查询,用在C#中怎么改,很简单 如何在类里调用类外部的方法 各位大哥,帮帮小女子吧,关于Timer和进度条的问题.谢谢!!! 求命:serialport类的问题读数据程序就无响应? 哪位高手告诉我,我写的这个为什么不对呀!!谢谢 一段有趣的C# 怎样在系统关闭时的强制关闭程序时,该程序调用一个方法?????? access的构造查询语句的控件,谁推荐一款?在线。。。。 有关TextBox中右键单击弹出快捷菜单 如何 读写 文件 指定字节位置 的内容? 在工程里建的xslt和xml文件怎么让自动到Debug目录,不用手动复制?
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
还要注意每个item改变时对其父节点和子节点的影响。就是说你还要改写系统的一些处理代码
算了,不是一下子说得清楚的,你先去www.codeproject.com上去看看的说。应该可以找到这样的代码的。
这个绝对满足你的需求