日期:2014-05-18 浏览次数:21266 次
/// <summary>
/// 获取某个节点的状态。
/// </summary>
/// <param name="node">要获取状态的节点</param>
/// <returns>当前节点的状态</returns>
//***********************************************************
//* 函数名称:GetChecked
//* 功能描述:获取当前节点的状态
//* 参 数:无
//* 返 回 值:
//* 作 者:
//* 创建日期:2004-06-28
//***********************************************************
public EnumCheckState GetChecked(TreeNode node)
{
TVITEM tTVITEM = new TVITEM();
int iState;
int iResult;
tTVITEM.mask = (int)(TVHit.OnItemButton | TVHit.OnItemIndent);
tTVITEM.hItem = node.Handle;
tTVITEM.stateMask = (int)(TVHit.TVIS_STATEIMAGEMASK);
tTVITEM.state = 0;
iResult = SendMessage(this.Handle, TreeViewMessages.TVM_GETITEM, 0, ref tTVITEM);
if (iResult != 0)
{
iState = tTVITEM.state;
iState = iState / 0xFFF;
return (EnumCheckState)(iState);
}
else
{
return EnumCheckState.Unchecked;
}
}
/// <summary>
/// 设置节点状态。
/// </summary>
/// <param name="node">要设置的节点</param>
/// <param name="state">设置的状态</param>
//***********************************************************
//* 函数名称:SetChecked
//* 功能描述:设置节点的状态
//* 参 数:无
//* 返 回 值:
//* 作 者:
//* 创建日期:2004-06-28
//***********************************************************
public void SetChecked(TreeNode node, EnumCheckState state)
{
CheckNode(node, state);
if (m_bThreeState && !m_bRadioCheck)
{
ChangeParent(node.Parent);
}
}
/// <summary>
/// 设置一个节点的状态,且当前节点的父节点和子节点状态不改变。
/// </summary>
/// <param name="node">要设置的节点</param>
/// <param name="state">设置的状态</param>
//***********************************************************
//* 函数名称:SetInternalChecked
//* 功能描述:改变当前节点的状态
//* 参 数:无
//* 返 回 值:
//* 作 者:
//* 创建日期:2004-06-28
//***********************************************************
public void SetInternalChecked(TreeNode node, EnumCheckState state)
{
int iState = (int)state;
TVITEM tTVITEM = new TVITEM();
tTVITEM.mask = (int)(TVHit.OnItemButton | TVHit.OnItemIndent);
tTVITEM.hItem = node.Handle;
tTVITEM.stateMask = (int)TVHit.TVIS_STATEIMAGEMASK;
tTVITEM.state = iState * 0x1000;
SendMessage(this.Handle, TreeViewMessages.TVM_SETITEM, 0, ref tTVITEM);
base.OnAfterCheck(new System.Windows.Forms.TreeViewEventArgs(node));
}
#endregion
#region "重写方法"
/// <summary>
/// 重写控件的 Refresh 方法,重绘控件
/// </summary>
//***********************************************************
//* 函数名称:Refresh
//* 功能描述:重写Refresh方法
//* 参 数:无
//* 返 回 值:
//* 作 者:
//* 创建日期:2004-06-28
//**********************************************