Как убрать выделение синего цвета выделенным элементом в listBox1 при нажатии на элемент? [Дубликат]

1

Когда я нажимаю на listBox1, чтобы выбрать элемент, элемент остается синим цветом вокруг него. Как я могу удалить этот цвет?

Изображение 174551

Теги:
winforms

2 ответа

4
Лучший ответ

Используйте этот код, чтобы изменить цвет выбора на любой цвет, который вы хотите:

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
        //Add this to your form initialization
        this.listBox1.DrawItem += new System.Windows.Forms.DrawItemEventHandler(this.listBox1_DrawItem);
    }

    private void listBox1_DrawItem(object sender, DrawItemEventArgs e)
    {
        if (e.Index < 0) return;
        //if the item state is selected them change the back color 
        if ((e.State & DrawItemState.Selected) == DrawItemState.Selected)
            e = new DrawItemEventArgs(e.Graphics,
                                      e.Font,
                                      e.Bounds,
                                      e.Index,
                                      e.State ^ DrawItemState.Selected,
                                      e.ForeColor,
                                      Color.Transparent);//Choose the color

        // Draw the background of the ListBox control for each item.
        e.DrawBackground();
        // Draw the current item text
        e.Graphics.DrawString(listBox1.Items[e.Index].ToString(), e.Font, Brushes.Black, e.Bounds, StringFormat.GenericDefault);
        // If the ListBox has focus, draw a focus rectangle around the selected item.
        e.DrawFocusRectangle();
    }
}

Я использовал прозрачный цвет, чтобы удалить цвет фона выделения, но если вы хотите, чтобы любой другой цвет просто изменил его самостоятельно.
Я использовал этот ответ в качестве справки: Как изменить цвет фона выбора ListBox?

Показать по форме:

Изображение 174551

Если вы хотите отменить выбор элемента в списке, используйте

listBox1.ClearSelected();

или

listBox1.SelectedIndex = -1;

Ура!

1

для ListBox вы можете написать такой код:

private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
{
    string s = string.Empty;

    if (listBox1.SelectedIndex != -1) 
        s = listBox1.SelectedItem.ToString();

    /// continue you code here .... 
    /// 

    /// after that remove the hilight 

    listBox1.SelectedIndex = -1;
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню