Este artigo foi traduzido por máquina. Para visualizar o arquivo em inglês, marque a caixa de seleção Inglês. Você também pode exibir o texto Em inglês em uma janela pop-up, movendo o ponteiro do mouse sobre o texto.
Tradução
Inglês

Evento ComboBox.MeasureItem

 

Ocorre sempre que um desenho proprietário ComboBox item deve ser desenhado e quando os tamanhos dos itens da 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 esse evento especificar o tamanho de um item é feito antes que ele é desenhado no DrawItem evento.

Para obter mais informações sobre manipulação de eventos, consulte tratamento e gerando eventos.

O exemplo de código a seguir demonstra como criar uma caixa de combinação desenhados pelo proprietário, definindo o DrawMode propriedade OwnerDrawnVariable e manipulando o DrawItem e MeasureItem eventos. Ele também demonstra a configuração de DropDownWidth e DropDownStyle Propriedades. Para executar o exemplo, cole o código a seguir em um formulário. Chamar o InitializeComboBox método no construtor do formulário ou Load eventos.


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
Disponível desde 1.1
Retornar ao início
Mostrar: