[共享]C#下如何禁止TreeView显示ToolTipText

大狗狗 2011-05-26 12:17:30
环境:VS2005 C# WinForm

TreeNode文字较长超过TreeView宽度,则鼠标移到TreeNode上时,会显示一个ToolTipText。

您或许觉得显示ToolTipText是理所当然的。但小弟需要它不要显示。理所当然地,First:
this.treeView1.ShowNodeToolTips = false;

结果不起作用。Second:
遍历TreeView,把每个TreeNode的ToolTipText设为空。意想不到的事情发生了:ToolTip照显不误。

赶紧goole,找到了VB下的解决办法,原来需要导入API,咱win32功底扎实,改成C#代码:

const int TVS_NOTOOLTIPS = 0x80;
const int GWL_STYLE = -16;

[DllImport("user32.dll")]
public extern static uint SetWindowLong(IntPtr hwnd, int nIndex, uint dwNewLong);

[DllImport("user32.dll")]
public extern static uint GetWindowLong(IntPtr hwnd, int nIndex);

public void HideToolTips(TreeView tv)
{
uint style = GetWindowLong(tv.Handle, GWL_STYLE);
style |= TVS_NOTOOLTIPS;
SetWindowLong(tv.Handle, GWL_STYLE, style);
}

嘻嘻,这下该水落石出了,敢紧编译试验----我了个考!toolTip还在!

废话少说,送上最终解决方案:


public class TreeViewEx:TreeView
{
private const int TVS_NOTOOLTIPS = 0x80;

/// <summary>
/// Disables the tooltip activity for the treenodes.
/// </summary>
protected override CreateParams CreateParams
{
get
{
CreateParams p = base.CreateParams;
p.Style = p.Style | TVS_NOTOOLTIPS;
return p;
}
}
}


呵呵,"编程"如果不是一个职业而是一个女人,而且是我老婆,我肯定对她暴力少不了。
...全文
474 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
PitTroll 2011-05-26
  • 打赏
  • 举报
回复
虐待老婆不好啊。

110,525

社区成员

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

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

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