Mục cuối cùng trong danh sách thả xuống có thể được tô màu không?

lập trình


Chào mọi người,

Mục cuối cùng trong Combo thả xuống có thể được tô màu nổi bật không?
Điều cần thiết là làm nổi bật mục cuối cùng trong hộp tổ hợp (hoặc hộp danh sách nếu việc đó dễ dàng hơn …)

Những gì tôi đã thử:

Để điền vào ô:

C#
for (int i = 0; i < 10; i++)
{
    cboTest.Items.Add(i.ToString());
}

để có được mục cuối cùng trong hộp

C#
cboTest.SelectedIndex = 9;

nhưng điều đó có nghĩa là bạn phải biết kích thước, vì vậy nếu biến của nó thì bạn có thể làm được

C#
while (!((ArrayComPortsNames[index] == ComPortName) ||
                       (index == ArrayComPortsNames.GetUpperBound(0))));

GetUpperBound(0) sẽ nhận được mục đầu tiên mà tôi không cho là có GetLowerBound(), như cboTest.GetLowerBound()??

Giải pháp 2

Nó phụ thuộc vào ý nghĩa của việc tô màu đối với cách bạn giải quyết vấn đề này (và tôi cho rằng bạn đang sử dụng Windows Forms ở đây). Nếu bạn muốn thay đổi màu nền trước, bạn có thể sử dụng cái gì đó như thế này

C#
private void comboBox1_DrawItem(object sender, DrawItemEventArgs e)
{    
    e.DrawBackground();        
    ComboBox combobox = sender as ComboBox;

    string text = combobox.Items[e.Index].ToString();

    Brush brush;
    if (e.Index == combobox.Items.Length - 1) 
    {
        brush = Brushes.Red;
    }
    else
    {
        brush = Brushes.Black;
    }


    e.Graphics.DrawString(text, combobox.Font, brush, e.Bounds.X, e.Bounds.Y);
}

Giải pháp 1

Làm thế nào bạn có thể chắc chắn có 10 món trong combo? Bạn nên sử dụng Count tài sản của Items bộ sưu tập. Bằng cách đó, bạn có thể có bất kỳ số lượng mục nào và luôn có thể đảm bảo tìm thấy mục cuối cùng. Về việc tô màu cái cuối cùng, hãy xemLớp ComboBoxRenderer (System.Windows.Forms) | Microsoft Tìm hiểu[^].

コメント

タイトルとURLをコピーしました