Bisakah item terakhir di drop down diwarnai?

pemrograman


Halo semua,

Bisakah item terakhir di Combo Drop down diberi warna yang Disorot?
Kebutuhannya adalah menyorot item terakhir dalam kotak kombo (atau kotak daftar jika itu lebih mudah…)

Apa yang saya coba:

Untuk mengisi kotak:

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

untuk mendapatkan item terakhir di dalam kotak

C#
cboTest.SelectedIndex = 9;

tapi itu berarti anda harus mengetahui ukurannya, jadi jika variabelnya bisa anda lakukan

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

Akankah GetUpperBound(0) mendapatkan item pertama yang saya kira tidak ada GetLowerBound(), seperti cboTest.GetLowerBound()??

Solusi 2

Itu tergantung apa yang Anda maksud dengan warna tentang bagaimana Anda menyelesaikannya (dan saya berasumsi Anda menggunakan Windows Forms di sini). Jika Anda ingin mengubah warna latar depan, Anda bisa menggunakan sesuatu seperti ini

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);
}

Solusi 1

Bagaimana Anda bisa yakin ada 10 item dalam kombo? Anda harus menggunakan Count properti dari Items koleksi. Dengan begitu, Anda dapat memiliki sejumlah entri, dan selalu dapat menjamin menemukan entri terakhir. Untuk mewarnai yang terakhir, coba lihatKelas ComboBoxRenderer (Sistem.Windows.Forms) | Microsoft Belajar[^].

コメント

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