У нас есть форма MDI, которая содержит некоторое количество дочерних форм, которые имеют разные титры, показывающие текущее загруженное имя файла документа. Когда дочерние формы максимизируются, текст заголовка помещается в строку заголовка родительского окна, что часто приводит к тому, что текст слишком длинный, чтобы поместиться в панели, а Windows достаточно хороша, чтобы добавить эллипсы и усечь текст.
Однако, когда вы наводите курсор на строку заголовка главного окна, она показывает всплывающую подсказку с тем, что должно быть всей строкой, но вместо этого всплывающая подсказка часто содержит небольшую часть строки. Например, если основной текст формы был:
Program1 - Filename:[Really_long_filename_that_doesnt_fit.file]
В подсказке будет отображаться следующее:
Program1 - Filename:[Really_long_filename_t
Edit: он всегда обрезает всплывающую подсказку ровно на 100 символов, что заставляет меня поверить, что это где-то верхний предел.
Есть ли способ изменить это, чтобы отобразить всю строку, или, если нет, полностью отключить всплывающую подсказку?
Любой язык допустим, хотя мы делаем это на С#.
В этом случае ручная подсказка и таймер отображают/скрывают заголовок, когда мышь перемещается по строке заголовка.
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;
};
}
}
Хотелось бы, чтобы у меня было что-то более полезное для вас, но, к сожалению, я не думаю, что есть способ обойти это. Вы можете либо сократить свои имена файлов, либо иметь дело с ним: (