Set the ComboBox 'Draw Mode' to OwnerDrawFixed and then add this DrawItem event

Colouring Text


	private: System::Void cmbMyComboBox_DrawItem(System::Object^  sender, System::Windows::Forms::DrawItemEventArgs^  e)
	{
		e->DrawBackground();

		if (e->Index >= 0)
		{
			ComboBox ^ClickedComboBox = dynamic_cast<ComboBox^>(sender);
			String ^text = Convert::ToString(ClickedComboBox->Items[e->Index]);
			System::Drawing::Font ^Font1 = ClickedComboBox->Font;

			System::Drawing::Brush ^Brush1;
			if (e->Index == 0)
				Brush1 = Brushes::Red;
			else
				Brush1 = Brushes::Green;

			e->Graphics->DrawString(text, Font1, Brush1, Convert::ToSingle(e->Bounds.X), Convert::ToSingle(e->Bounds.Y));
		}
	}

Colouring The Background Of Items


	private: System::Void cmbMyComboBox_DrawItem(System::Object^  sender, System::Windows::Forms::DrawItemEventArgs^  e)
	{
		try
		{
			//e->DrawBackground();
			if (e.Index == combo.SelectedIndex)
				e->Graphics->FillRectangle(gcnew SolidBrush(Color::Gray), e->Bounds);
			else
				e->Graphics->FillRectangle(gcnew SolidBrush(Color::White), e->Bounds);
		}
	}

 

Feel free to comment if you can add help to this page or point out issues and solutions you have found. I do not provide support on this site, if you need help with a problem head over to stack overflow.

Comments

Your email address will not be published.