代码之家  ›  专栏  ›  技术社区  ›  Ron Warholic

修改或隐藏窗体的标题工具提示

  •  2
  • Ron Warholic  · 技术社区  · 15 年前

    我们有一个MDI表单,其中包含一些子表单,这些子表单具有不同的标题,显示当前加载的文档的文件名。当子窗体最大化时,它们的标题文本会被放置在父窗口的标题栏中,这通常会导致文本太长而无法放入标题栏,而窗口可以添加省略号并截断文本。

    但是,当您将鼠标悬停在主窗口的标题栏上时,它会显示一个包含整个字符串的工具提示,但该工具提示通常只包含字符串的一小部分。例如,如果主窗体的文本为:

    Program1 - Filename:[Really_long_filename_that_doesnt_fit.file]

    Program1 - Filename:[Really_long_filename_t

    编辑:它总是将工具提示截短到正好100个字符,这让我相信它是某个指定的上限。

    是否有方法更改此选项以显示整个字符串,或者如果没有,则完全禁用工具提示?

    任何语言都是可以接受的,尽管我们使用C语言。

    2 回复  |  直到 15 年前
        1
  •  4
  •   jjxtra    15 年前

    这将使用手动工具提示和计时器在鼠标移动到标题栏上时显示/隐藏标题。

    public partial class Form1 : Form
    {
        private ToolTip toolTip = new ToolTip();
        private Timer toolTipTimer = new Timer();
        private bool canShowToolTip = true;
    
        protected override void WndProc(ref Message m)
        {
            switch (m.Msg)
            {
                case 0x2A0: // WM_NCMOUSEHOVER
                    return;
                case (int)0x00A0: // WM_NCMOUSEMOVE
                    if (m.WParam == new IntPtr(0x0002)) // HT_CAPTION
                    {
                        if (canShowToolTip)
                        {
                            canShowToolTip = false;
                            toolTip.Show(this.Text, this, this.PointToClient(Cursor.Position), toolTip.AutoPopDelay);
                            toolTipTimer.Start();
                        }
                    }
                    return;
            }
            base.WndProc(ref m);
        }
    
        public Form1()
        {
            InitializeComponent();
            Form child = new Form();
            child.Text = "Program1 - Filename:[Really_long_filename_that_doesnt_fit.file] AAAAAAAAAAAAAAAAAAAA BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB";
            child.MdiParent = this;
            child.Show();
            toolTip.AutoPopDelay = 5000;
            toolTipTimer.Interval = toolTip.AutoPopDelay;
            toolTipTimer.Tick += delegate(object sender, EventArgs e)
            {
                canShowToolTip = true;
            };
        }
    }
    
        2
  •  0
  •   Jason    15 年前