2008-10-18 12 views
10

मैं ग्रिड बनाने के लिए सी # में एक सूची दृश्य का उपयोग कर रहा हूं। मैं प्रोग्रामिक रूप से एक विशिष्ट सेल को हाइलाइट करने में सक्षम होने का एक तरीका खोजना चाहता हूं। मुझे केवल एक सेल को हाइलाइट करने की आवश्यकता है।सी # सूची दृश्य विवरण, एक एकल सेल को हाइलाइट करें

मैंने मालिक ड्रोनयुक्त सबिटैम्स के साथ प्रयोग किया है, लेकिन नीचे दिए गए कोड का उपयोग करके, मुझे कोशिकाओं को हाइलाइट किया जाता है, लेकिन कोई टेक्स्ट नहीं! क्या यह काम करने के बारे में कोई विचार है? आपकी सहायता के लिए धन्यवाद.

//m_PC.Location is the X,Y coordinates of the highlighted cell. 


void listView1_DrawSubItem(object sender, DrawListViewSubItemEventArgs e) 
{ 
    if ((e.ItemIndex == m_PC.Location.Y) && (e.Item.SubItems.IndexOf(e.SubItem) == m_PC.Location.X)) 
     e.SubItem.BackColor = Color.Blue; 
    else 
     e.SubItem.BackColor = Color.White; 
    e.DrawBackground(); 
    e.DrawText(); 
} 
+0

विनफॉर्म या वेब? – tvanfosson

उत्तर

14

आप मालिक-ड्राइंग सूची के बिना यह कर सकते हैं:

// create a new list item with a subitem that has white text on a blue background 
ListViewItem lvi = new ListViewItem("item text"); 
lvi.UseItemStyleForSubItems = false; 
lvi.SubItems.Add(new ListViewItem.ListViewSubItem(lvi, 
    "subitem", Color.White, Color.Blue, lvi.Font)); 

ListViewSubItem निर्माता के लिए रंग तर्क सबआइटम के अग्रभूमि और पृष्ठभूमि रंग को नियंत्रित करने कर रहे हैं। यहां करने की महत्वपूर्ण बात सूची आइटम पर गलत पर UseItemStyleForSubItems सेट है, अन्यथा आपके रंग परिवर्तनों को अनदेखा कर दिया जाएगा।

मुझे लगता है कि आपका मालिक-ड्रा समाधान भी काम करता होगा, लेकिन जब आप पृष्ठभूमि को नीले रंग में बदलते हैं तो आपको पाठ (अग्रभूमि) रंग बदलना याद रखना होगा, अन्यथा पाठ देखना मुश्किल होगा।

1

यह पता लगाया। एक विशिष्ट उप-वर्ग की हाइलाइट टॉगल करने के लिए कोड यहां दिया गया है।

listView1.Items[1].UseItemStyleForSubItems = false; 
if (listView1.Items[1].SubItems[10].BackColor == Color.DarkBlue) 
{ 
    listView1.Items[1].SubItems[10].BackColor = Color.White; 
    listView1.Items[1].SubItems[10].ForeColor = Color.Black; 
} 
else 
{ 
    listView1.Items[1].SubItems[10].BackColor = Color.DarkBlue; 
    listView1.Items[1].SubItems[10].ForeColor = Color.White; 
} 
1

मेरे मामले में, मैं सभी क्षेत्रों सहित विशिष्ट पंक्तियों को हाइलाइट करना चाहता था। तो पहले कॉलम में "मेडिकेयर" के साथ मेरी लिस्टव्यू में प्रत्येक पंक्ति पूरी पंक्ति को हाइलाइट करती है:

public void HighLightListViewRows(ListView xLst) 
     { 
      for (int i = 0; i < xLst.Items.Count; i++) 
      { 
       if (xLst.Items[i].SubItems[0].Text.ToString() == "Medicare") 
       { 
        for (int x = 0; x < xLst.Items[i].SubItems.Count; x++) 
        { 
         xLst.Items[i].SubItems[x].BackColor = Color.Yellow; 
        } 
       } 
      } 
     } 
संबंधित मुद्दे