क्या ड्रॉप डाउन में अंतिम आइटम को रंगीन किया जा सकता है?


नमस्ते,

क्या कॉम्बो ड्रॉप डाउन में अंतिम आइटम को रंगीन हाइलाइट किया जा सकता है?
कॉम्बो बॉक्स में अंतिम आइटम को हाइलाइट करने की आवश्यकता है (या यदि यह आसान हो तो सूची बॉक्स…)

मैंने क्या प्रयास किया है:

बॉक्स भरने के लिए:

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

बॉक्स में अंतिम आइटम प्राप्त करने के लिए

सी#
cboTest.SelectedIndex = 9;

लेकिन इसका मतलब है कि आपको आकार जानना होगा, इसलिए यदि इसका परिवर्तनशील है तो आप ऐसा कर सकते हैं

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

क्या GetUpperBound(0) को पहला आइटम मिलेगा, मुझे नहीं लगता कि cboTest.GetLowerBound() की तरह GetLowerBound() है??

समाधान 1

आप यह कैसे सुनिश्चित कर सकते हैं कि कॉम्बो में 10 आइटम हैं? आपको इसका उपयोग करना चाहिए Count की संपत्ति Items संग्रह। इस तरह से आपके पास कितनी भी संख्या में प्रविष्टियाँ हो सकती हैं, और आप हमेशा अंतिम प्रविष्टि खोजने की गारंटी दे सकते हैं। जहाँ तक पिछले वाले को रंगने की बात है, तो एक नज़र डालेंComboBoxRenderer क्लास (System.Windows.Forms) | माइक्रोसॉफ्ट लर्न[^].

समाधान 2

यह निर्भर करता है कि आप रंगीन से क्या मतलब रखते हैं और आप इसे कैसे हल करेंगे (और मैं मान रहा हूं कि आप यहां विंडोज फॉर्म का उपयोग कर रहे हैं)। यदि आप अग्रभूमि का रंग बदलना चाहते हैं, तो आप कुछ इस तरह का उपयोग कर सकते हैं

सी#
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をコピーしました