ऐसा लगता है कि ऐसा कोई है जो एक ListView
अनुरूपण Grid Line Color
समर्थन करने के लिए में रुचि है नहीं है की तरह है कि। मैंने यह कोशिश की है और यहां साझा करना चाहता हूं। जब आप ListView आइटम स्क्रॉल करते हैं तो यह थोड़ा झिलमिलाहट (वास्तव में बहुत अधिक नहीं) द्वारा वास्तव में अच्छा नहीं है। हालांकि यह स्वीकार्य है। मुझे लगता है मैं win32
यहाँ के कुछ ज्ञान की कमी है इसे और अधिक सही बनाने के लिए:
public class CustomListView : ListView {
bool scrollDown;
int lastScroll;
public Color GridLinesColor {get;set;}
[DllImport("user32")]
private static extern int GetScrollPos(IntPtr hwnd, int nBar);
public CustomListView(){
GridLinesColor = Color.Red;
DoubleBuffered = true;
base.GridLines = false;//We should prevent the default drawing of gridlines.
}
public new bool GridLines {get;set;}
protected override void WndProc(ref Message m)
{
if (m.Msg == 0x20a){//WM_MOUSEWHEEL = 0x20a
scrollDown = (m.WParam.ToInt64() >> 16) < 0;
}
if (m.Msg == 0x115){//WM_VSCROLL = 0x115
int n = (m.WParam.ToInt32() >> 16);
scrollDown = n > lastScroll;
lastScroll = n;
}
base.WndProc(ref m);
if (m.Msg == 0xf && GridLines && Items.Count > 0&&View==View.Details)//WM_PAINT = 0xf
{
using (Graphics g = CreateGraphics())
{
using(Pen p = new Pen(GridLinesColor)){
int w = -GetScrollPos(Handle, 0);
for (int i = 0; i < Columns.Count; i++)
{
w += Columns[i].Width;
g.DrawLine(p, new Point(w, 0), new Point(w, ClientSize.Height));
}
int a = Items[0].Bounds.Bottom - 1;
int b = Height - Items[0].Bounds.Y;
int c = Items[0].Bounds.Height;
for (int i = scrollDown ? a + (b/c) * c : a ; scrollDown ? i >= a : i < b ; i += scrollDown ? -c : c)
{
g.DrawLine(p, new Point(0, i), new Point(ClientSize.Width, i));
}
}
}
}
}
}
अद्यतन: कोड़ी ग्रे के सुझाव के लिए धन्यवाद, मैं क्षैतिज स्क्रॉल को संभालने के लिए कोड जोड़ा। मैं सादगी के लिए GetScrollPos
का उपयोग करता हूं क्योंकि एमएसडीएन दस्तावेज़ीकरण पृष्ठ द्वारा अनुशंसित अनुसार, हमें इसके बजाय GetScrollInfo
का उपयोग करना चाहिए।
स्रोत
2013-08-17 04:29:40
शायद यह? http://stackoverflow.com/questions/1814692/change-the-background-color-of-winform-listview-headers – RenniePet
या यह? http://stackoverflow.com/questions/6008226/are-there-any-good-and-free-devexpress-data-grid-alternatives-for-winforms – RenniePet
@RenniePet: क्षमा करें लेकिन क्या आप देख सकते हैं कि दोनों विषय आपने प्रदान किया मेरे प्रश्न से बहुत दूर हैं? एक धोखेबाज के लिए और दूसरा केवल हेडर रंग की समस्या हल करता है, उन ग्रिड लाइनों के बारे में क्या? –