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 #.

È stato utile?

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 :(

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top