Domanda

Sono personalizzati disegnando una voce di menu in un MenuStrip. Il problema che sto avendo è che la voce di menu insiste sul dimensionamento si è basata sul testo, che non è quello che voglio (non c'è alcun testo). Posso impostare AutoSize su false e esplicitamente specificare un formato, ma il menu che contiene (ToolStripDropDown) stessa dimensioni ancora in base al testo, che fa sì che sia troppo piccola per contenere l'intera voce di menu.

C'è un modo semplice per impostare la dimensione di una voce di menu?

È stato utile?

Soluzione 2

Questa commenti a un articolo su CodeProject spiega la natura del mio problema:

Mentre è possibile gestire l'evento Paint per un ToolStripMenuItem, ToolStripMenuItem non è destinato ad essere "proprietario disegnato". Se si desidera gestire il disegno di un particolare elemento striscia degli strumenti, i mezzi consigliata è quella di creare un tipo di ToolStripItem-derivato. Vedere ToolStripItem Classe [^] per un esempio .

Altri suggerimenti

Esso può essere realizzato aggiungendo un'immagine vuota al toolStripItem. Ora modificare la dimensione dell'immagine per dare le dimensioni desiderate per il vostro ToolStripItem. L'ho fatto nel mio progetto come di seguito:

using System;
using System.Collections.Generic;
using System.Drawing;
using System.Windows.Forms;

public partial class Form1 : Form
{    
    public Form1()
    {
        Bitmap emptyImage = new Bitmap(48, 48);
        ToolStripMenuItem  m_Item = new ToolStripMenuItem(System.Convert.ToString("All       Programs",emptyImage);
        m_Item.ImageAlign = ContentAlignment.MiddleLeft;
        m_Item.ImageScaling = ToolStripItemImageScaling.None;                        
        m_Item.Name = btnId.ToString();
        MenuStrip menu = new MenuStrip();
        menu.Items.Add(m_Item);
    }
}
  1. È possibile impostare la larghezza (non altezza) della vostra voce di menu utilizzando gli spazi, e quindi disegnare sullo spazio vuoto con OnPaint
  2. Se è necessario inserire un'immagine in discesa perché l'uso ToolStripMenuItem? Per esempio è possibile inserire ToolStripControlHost con immagine incorporata. E non dimenticate che è possibile cambiare il layout discesa utilizzando LayoutStyle e LayoutSettings strutture (per esempio dalla pila a disposizione della tabella)
  3. È possibile non solo specificare la dimensione per la vostra voce di menu, ma è anche possibile specificare la dimensione per la caduta verso il basso dove si trova. Per esempio, quando è discesa apertura (OnOpening, Aprire, DropDownOpending molti modi per reagire) è possibile impostare la larghezza minima (o altezza, o entrambi) utilizzando struttura ToolStripDropDown.MinimumSize.

In generale ToolStrip è più correttamente architectured di controllo nello spazio dei nomi WinForms. Ha quasi illimitate possibilità e molto estensibile.

Aggiornamento: Secondo il vostro commento. Non posso dire molto, perché mentre ToolStrip è più architectured è anche commentato molto buono, e molte cose particolari hanno bisogno di essere scoperti. Ho ancora aggiunto 3 # per la mia risposta, ma molte cose possono essere scoperti solo da provare, e utilizzando Reflector naturalmente.

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