下拉列表中的最后一项可以着色吗?


大家好,

组合下拉列表中的最后一项可以用颜色突出显示吗?
需要突出显示组合框(或列表框,如果更容易的话……)中的最后一项

我尝试过的:

填写该框:

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

获取框中的最后一个项目

C#
cboTest.SelectedIndex = 9;

但这意味着你必须知道大小,所以如果它的变量可以你做

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

GetUpperBound(0) 会得到第一个项目吗?我不认为有 GetLowerBound(),比如 cboTest.GetLowerBound()?

解决方案1

您如何确定组合中有 10 件物品? 您应该使用 Count 的财产 Items 收藏。 这样您就可以拥有任意数量的条目,并且始终可以保证找到最后一个。 至于最后一张的颜色,请看一下ComboBoxRenderer 类 (System.Windows.Forms) | 微软学习[^]。

解决方案2

这取决于您如何解决这个问题,这取决于您所说的颜色的含义(我假设您在这里使用的是 Windows 窗体)。 如果你想改变前景色,你可以使用这样的东西

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

コメント

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