Exportar (0) Imprimir
Expandir Tudo
Este artigo foi traduzido por máquina. Coloque o ponteiro do mouse sobre as frases do artigo para ver o texto original. Mais informações.
Tradução
Original

Evento ComboBox.MeasureItem

Ocorre sempre que um item proprietário- desenhado de ComboBox precisa ser desenhada e quando os tamanhos dos itens de lista são determinados.

Namespace:  System.Windows.Forms
Assembly:  System.Windows.Forms (em System.Windows.Forms.dll)

public event MeasureItemEventHandler MeasureItem

Você pode criar um manipulador de eventos para este evento especifica o tamanho que um item é feito antes que seja desenhado no evento de DrawItem .

Para obter mais informações sobre tratamento de eventos, consulte Consumindo Eventos.

O exemplo de código demonstra como criar uma caixa de combinação proprietário- desenhada definindo a propriedade de DrawMode a OwnerDrawnVariable e manipulando os eventos de DrawItem e de MeasureItem . Demonstra também definir as propriedades de DropDownWidth e de DropDownStyle . Para executar o exemplo, cole o seguinte código em um formulário. Chame o método de InitializeComboBox no construtor do formulário ou no evento de Load .



	internal System.Windows.Forms.ComboBox ComboBox1;
	private string[] animals;

	// This method initializes the owner-drawn combo box.
	// The drop-down width is set much wider than the size of the combo box
	// to accomodate the large items in the list.  The drop-down style is set to 
	// ComboBox.DropDown, which requires the user to click on the arrow to 
	// see the list.
	private void InitializeComboBox()
	{
		this.ComboBox1 = new ComboBox();
		this.ComboBox1.DrawMode = 
			System.Windows.Forms.DrawMode.OwnerDrawVariable;
		this.ComboBox1.Location = new System.Drawing.Point(10, 20);
		this.ComboBox1.Name = "ComboBox1";
		this.ComboBox1.Size = new System.Drawing.Size(100, 120);
		this.ComboBox1.DropDownWidth = 250;
		this.ComboBox1.TabIndex = 0;
		this.ComboBox1.DropDownStyle = ComboBoxStyle.DropDown;
		animals = new string[]{"Elephant", "c r o c o d i l e", "lion"};
		ComboBox1.DataSource = animals;
		this.Controls.Add(this.ComboBox1);

		// Hook up the MeasureItem and DrawItem events
		this.ComboBox1.DrawItem += 
			new DrawItemEventHandler(ComboBox1_DrawItem);
		this.ComboBox1.MeasureItem += 
			new MeasureItemEventHandler(ComboBox1_MeasureItem);
	}

	// If you set the Draw property to DrawMode.OwnerDrawVariable, 
	// you must handle the MeasureItem event. This event handler 
	// will set the height and width of each item before it is drawn. 
	private void ComboBox1_MeasureItem(object sender, 
		System.Windows.Forms.MeasureItemEventArgs e)
	{

		switch(e.Index)
		{
			case 0:
				e.ItemHeight = 45;
				break;
			case 1:
				e.ItemHeight = 20;
				break;
			case 2:
				e.ItemHeight = 35;
				break;
		}
		e.ItemWidth = 260;

	}

	// You must handle the DrawItem event for owner-drawn combo boxes.  
	// This event handler changes the color, size and font of an 
	// item based on its position in the array.
	private void ComboBox1_DrawItem(object sender, 
		System.Windows.Forms.DrawItemEventArgs e)
	{

		float size = 0;
		System.Drawing.Font myFont;
		FontFamily family = null;

		System.Drawing.Color animalColor = new System.Drawing.Color();
		switch(e.Index)
		{
			case 0:
				size = 30;
				animalColor = System.Drawing.Color.Gray;
				family = FontFamily.GenericSansSerif;
				break;
			case 1:
				size = 10;
				animalColor = System.Drawing.Color.LawnGreen;
				family = FontFamily.GenericMonospace;
				break;
			case 2:
				size = 15;
				animalColor = System.Drawing.Color.Tan;
				family = FontFamily.GenericSansSerif;
				break;
		}

		// Draw the background of the item.
		e.DrawBackground();

		// Create a square filled with the animals color. Vary the size
		// of the rectangle based on the length of the animals name.
		Rectangle rectangle = new Rectangle(2, e.Bounds.Top+2, 
				e.Bounds.Height, e.Bounds.Height-4);
		e.Graphics.FillRectangle(new SolidBrush(animalColor), rectangle);

		// Draw each string in the array, using a different size, color,
		// and font for each item.
		myFont = new Font(family, size, FontStyle.Bold);
		e.Graphics.DrawString(animals[e.Index], myFont, System.Drawing.Brushes.Black, new RectangleF(e.Bounds.X+rectangle.Width, e.Bounds.Y, e.Bounds.Width, e.Bounds.Height));

		// Draw the focus rectangle if the mouse hovers over an item.
		e.DrawFocusRectangle();
	}



.NET Framework

Com suporte em: 4.5, 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Com suporte em: 4, 3.5 SP1

Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Função Server Core sem suporte), Windows Server 2008 R2 (Função Server Core com suporte com o SP1 ou posterior, Itanium sem suporte)

O .NET Framework não oferece suporte a todas as versões de cada plataforma. Para obter uma lista das versões com suporte, consulte Requisitos do sistema do .NET Framework.

Contribuições da comunidade

ADICIONAR
Mostrar:
© 2014 Microsoft