Pregunta

Estoy dibujando a medida un elemento de menú en un MenuStrip. El problema que estoy teniendo es que el elemento de menú en sí insiste en dimensionamiento basado en el texto, que no es lo que quiero (no hay ningún texto). Puedo establecer AutoSize en false y especificar explícitamente un tamaño, pero el menú que contiene (ToolStripDropDown) siendo los tamaños propio basado en el texto, lo que hace que sea demasiado pequeño para contener la totalidad del elemento de menú.

¿Hay una manera sencilla de configurar el tamaño de un elemento de menú?

¿Fue útil?

Solución 2

Esta comentarios en un artículo sobre CodeProject explica la naturaleza de mi problema:

Si bien se puede controlar el evento Paint para un ToolStripMenuItem, ToolStripMenuItem no pretende ser "dueño dibujado". Si desea controlar el dibujo de un elemento de tira de herramientas particular, los medios recomendado es crear su propio tipo ToolStripItem derivados. Ver ToolStripItem Clase [^] para un ejemplo .

Otros consejos

Se puede lograr mediante la adición de una imagen vacía a la toolStripItem. Ahora cambia el tamaño de la imagen para dar el tamaño deseado para su ToolStripItem. Lo he hecho en mi proyecto de la siguiente manera:

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. Puede establecer el ancho (no altura) de su elemento de menú mediante el uso de los espacios, y luego dibujar en el espacio vacío con OnPaint
  2. Si es necesario colocar la imagen en la lista desplegable por qué el uso ToolStripMenuItem? Por ejemplo, puede colocar ToolStripControlHost con imagen incrustada. Y no olvide que puede cambiar desplegables diseño mediante el uso de y href="http://msdn.microsoft.com/en-us/library/system.windows.forms.toolstrip_properties.aspx" rel="nofollow"> LayoutSettings propiedades (por ejemplo de la pila a disposición de la tabla)
  3. Usted no sólo puede especificar el tamaño de su elemento de menú, pero también se puede especificar el tamaño de gota abajo donde se encuentra. Por ejemplo, cuando cae abajo es de apertura (OnOpening, Abrir, DropDownOpending muchas maneras de reaccionar) se puede establecer el ancho mínimo (o altura, o ambos) mediante el uso de la propiedad ToolStripDropDown.MinimumSize.

En general, se ToolStrip más adecuadamente architectured control en el espacio de nombres de Windows Forms. Tiene posibilidades casi ilimitadas y muy extensible.

Actualización: De acuerdo con su comentario. No puedo decir mucho, ya que mientras más se ToolStrip architectured también se comentó muy bueno, y muchas cosas particulares que ser descubierto. Todavía añadido # 3 a mi respuesta, pero muchas cosas se pueden descubrir solamente por tratar, y mediante el uso del reflector por supuesto.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top