Modifica o nascondi la descrizione comandi di un modulo
-
06-07-2019 - |
Domanda
Abbiamo un modulo MDI che contiene un numero di moduli figlio con sottotitoli che mostrano il nome del file del documento attualmente caricato. Quando i moduli figlio sono ingranditi, il loro testo del titolo viene inserito nella barra del titolo della finestra principale, il che spesso risulta che il testo è troppo lungo per adattarsi alla barra e Windows è abbastanza carino da aggiungere ellissi e troncare il testo.
Tuttavia, quando passi con il mouse sopra la barra del titolo della finestra principale, mostra una descrizione di ciò che dovrebbe essere l'intera stringa, ma invece la descrizione contiene spesso una piccola frazione della stringa. Ad esempio, se il testo del modulo principale era:
Program1 - Filename:[Really_long_filename_that_doesnt_fit.file]
Apparirà come segue nella descrizione comando:
Program1 - Filename:[Really_long_filename_t
Modifica: tronca sempre la descrizione comando a esattamente 100 caratteri, il che mi porta a credere che sia un limite superiore specificato da qualche parte.
C'è un modo per cambiarlo in modo che visualizzi l'intera stringa o, in caso contrario, disabilitare completamente la descrizione comando?
Qualsiasi lingua è accettabile, anche se lo stiamo facendo in C #.
Soluzione
Utilizza una descrizione manuale e un timer per mostrare / nascondere una didascalia quando il mouse si sposta sulla barra del titolo.
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;
};
}
}
Altri suggerimenti
Vorrei avere qualcosa di più utile per te, ma sfortunatamente, non penso che ci sia un modo per aggirare questo. È possibile abbreviare i nomi dei file o gestirli :(