Я создал ListBox, в который я добавляю элементы во время компиляции кода. и я хочу записать его цвет при добавлении одного элемента (чтобы каждый добавленный элемент имел другой цвет)
listBox1.Items.Add(string.Format("Місце {0} | В роботі з {1} | ({2} хв)", temp[7].Substring(6, 4), temp[8].Substring(11, 5), rezult)); `
Я пытался везде, где только можно, встроить это изменение
BackColor = Color.Yellow;ForeColor = Color.Yellow;
Я работаю со списком, потому что я видел так много ответов о ListView.
Как говорит @jmcilhinney, для этого нужно немного поработать. Посмотрите на это
Например: Как добавить многострочный текст в элемент ListBox?. Вы можете установить цвет текста и цвет фона выбранных и невыбранных элементов на все, что хотите. Вы можете определить, какой цвет использовать, основываясь на любом заданном вами условии. Может быть тегом или чем-то подобным, частью текста. Вы можете заменить его во время рисования предмета





Установите для списка DrawMode значение OwnerDrawFixed или OwnerDrawVariable и установите его в качестве обработчика события DrawItem:
private void listBox1_DrawItem(object sender, DrawItemEventArgs e){
if (e.Index == 1) e.DrawBackground(); //use e.Index to see if we want to highlight the item
else e.Graphics.FillRectangle(new SolidBrush(Color.Yellow), e.Bounds); //This does the same thing as e.DrawBackground but with a custom color
e.DrawFocusRectangle();
if (e.Index < 0) return;
TextRenderer.DrawText(e.Graphics, (string)listBox1.Items[e.Index], listBox1.Font, e.Bounds, listBox1.ForeColor, TextFormatFlags.Left);
}
Я только что изменил текст элемента в вызове DrawText, если вам интересно.
да заметил) теперь думаю как его вкрутить в свою программу, я еще новичок)
Что ж, лучшая идея, которая у меня есть, - использовать не список, а flowLayoutPanel и добавить пользовательские элементы управления, где у вас будут метки.
flowLayoutPanel работает как список элементов управления, которые вы можете прокручивать, поэтому мы просто создадим usercontrol, где мы поместим метку и изменим фон usercontrol
Не забудьте включить функцию AutoScroll на flowLayoutPanel, иначе полоса прокрутки не будет работать и даже не появится.
Если вы хотите, чтобы на вас можно было кликнуть, просто добавьте к событию клика метки.
public void CreateItem(Color OurColor, string TextToShow)
{
Label OurText = new Label()
{
Text = "TextToShow",
Font = new Font("Segoe UI", 8f),
Location = new Point(0, 0),
AutoSize = true,
};
UserControl OurUserControl = new UserControl();
OurUserControl.Size = new Size((int)((double)flowLayoutPanel1.Width * 0.9) , OurText.Font.Height);
OurUserControl.BackColor = OurColor;
OurUserControl.Controls.Add(OurText);
flowLayoutPanel1.Controls.Add(OurUserControl);
}
неплохая идея на будущее буду иметь в виду. Но пока мне проще понять список. спасибо за помощь
Предполагая WinForms, вы не можете установить цвет отдельного элемента с помощью простых свойств. Вам нужно будет рисовать предметы самостоятельно. Посмотрите на свойство DrawMode и событие DrawItem элемента управления.