powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / При изменении у ListBox св-ва DrawMode на OverDrawnFixed увеличился интервал между буквами
1 сообщений из 1, страница 1 из 1
При изменении у ListBox св-ва DrawMode на OverDrawnFixed увеличился интервал между буквами
    #39546864
Warlock86
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Хотел сделать ListBox с белым текстом на чёрном фоне, и чтобы цвет выбранного элемента менялся на чёрный текст на белом фоне. При свойстве DrawMode=Normal выбранный элемент синего цвета. Изменил свойство на OverDrawnFixed и добавил событие DrawItem.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
	private: System::Void listBox1_DrawItem(System::Object^  sender, System::Windows::Forms::DrawItemEventArgs^  e) {
				System::Windows::Forms::ListBox^ lb = (System::Windows::Forms::ListBox^) sender;
				 Brush^ b;
				 
				 Rectangle^ r = gcnew Rectangle(e->Bounds.Left,e->Bounds.Top ,e->Bounds.Width ,e->Bounds.Height );

				 if(e->Index<0) return;
				 if((e->State & DrawItemState::Selected)== DrawItemState::Selected){
					 e= gcnew DrawItemEventArgs(e->Graphics,e->Font,*r ,e->Index,e->State ^ DrawItemState::Selected,Color::Black,Color::White);
					 b=gcnew SolidBrush(Color::Black);
				 } else {
					 b=gcnew SolidBrush(Color::White);
				 }
				 e->DrawBackground();
				 StringFormat^ sf = gcnew StringFormat();
				 sf->FormatFlags=StringFormatFlags::NoClip;
				 e->Graphics->DrawString(lb->Items[e->Index]->ToString(),e->Font,b,*r,sf);
				 e->DrawFocusRectangle();
			 }


Цвет выбранного элемента изменился, но в то же время изменился и шрифт. Увеличилось расстояние между символами. Если раньше, при DrawMode=Normal, в ListBox размером 224*100px и шрифтом Consolas 13pt в строчке помещалось 25 символов, то при DrawMode=OverDrawnFixed - только 22.

Подскажите, пожалуйста, с чем это может быть связано.
...
Рейтинг: 0 / 0
1 сообщений из 1, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / При изменении у ListBox св-ва DrawMode на OverDrawnFixed увеличился интервал между буквами
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]