【问题标题】:Disable WinForms ListViewItem Tooltip for long texts禁用长文本的 WinForms ListViewItem 工具提示
【发布时间】:2015-11-27 14:12:12
【问题描述】:

我创建了ListView 并添加了两个带有长文本的项目。 当我选择第一项时,第二项的文本被剪切,例如“MyIte....”。

所以当在这个项目下移动鼠标指针时,我会看到带有所有文本的工具提示。

如何禁用此工具提示?

设置属性ListView.ShowItemToolTips = false 没有帮助。

【问题讨论】:

    标签: c# .net winforms listview tooltip


    【解决方案1】:

    ListView 在收到带有TTN_NEEDTEXT lparam 的WM_Notify 消息时显示项目工具提示。因此,要禁用工具提示,您可以处理 ListView 消息,如果控件收到该消息,则忽略它。

    您可以继承您的 ListView 并覆盖 WndProc,但作为另一种选择,您可以注册一个 NativeWindow 来接收您的 ListView 消息,这样您就可以过滤消息。

    实施

    public class ListViewToolTipHelper : NativeWindow
    {
        private ListView parentListView;
        private const int WM_NOTIFY = 78;
        private const int TTN_FIRST = -520;
        private const int TTN_NEEDTEXT = (TTN_FIRST - 10);
        public struct NMHDR
        {
            public IntPtr hwndFrom;
            public IntPtr idFrom;
            public Int32 code;
        }
        public bool TooltipEnabled { get; set; }
        protected override void WndProc(ref Message m)
        {
            if (m.Msg == WM_NOTIFY && !TooltipEnabled)
            {
                var nmHdr = (NMHDR) m.GetLParam(typeof(NMHDR));
                if (nmHdr.code == TTN_NEEDTEXT)
                    return;
            }
    
            base.WndProc(ref m);
        }
        public ListViewToolTipHelper(ListView listView)
        {
            this.parentListView = listView;
            this.AssignHandle(listView.Handle);
        }
    }
    

    用法

    要禁用 ListView 的工具提示,您可以简单地创建上述类的实例:

    ListViewToolTipHelper helper;
    helper = new ListViewToolTipHelper(this.listView1);
    

    再次启用工具提示:

    helper.TooltipEnabled = true;
    

    另一种解决方法

    您可以使用此解决方法禁用ListView 的工具提示,但副作用是表单中的所有其他工具提示也将通过这种方式禁用。

    ToolTip toolTip = new ToolTip();
    toolTip.SetToolTip(this.listView1, "dummy text");
    toolTip.Active = false;
    

    【讨论】:

    • 感谢您的回复。对不起我的英语(
    猜你喜欢
    • 1970-01-01
    • 2013-09-02
    • 2011-02-13
    • 1970-01-01
    • 1970-01-01
    • 2011-05-19
    • 1970-01-01
    • 2011-09-03
    • 1970-01-01
    相关资源
    最近更新 更多