ListViewItem Border - 紧凑框架

5
我有一个 ListView,在其中添加了一些 ListViewItem 作为项。View 属性设置为 Details。当 ListView 显示时,ListViewItem 没有任何边框(顶部和底部线将一个项与另一个项分开)。
我该怎么做才能为所有的项添加边框?
一个例子: enter image description here

1
嘿,我觉得有人借用了我的图片! :) - user153923
2个回答

5

不知为何,CF控件不支持网格线,但其底层的本地ListView支持。这时可以使用P/Invoke解决。

private const uint LVM_FIRST = 0x1000;
private const uint LVM_SETEXTENDEDLISTVIEWSTYLE = LVM_FIRST + 54;
private const uint LVM_GETEXTENDEDLISTVIEWSTYLE = LVM_FIRST + 55;
private const uint LVS_EX_GRIDLINES = 0x00000001;

[DllImport("coredll.dll")]
private static extern uint SendMessage(IntPtr hwnd, uint msg, uint wparam, uint lparam);

public void EnableGridlines(ListView listView)
{
    var style = SendMessage(
            listView.Handle,
            LVM_GETEXTENDEDLISTVIEWSTYLE,
            0,
            0);

    style |= LVS_EX_GRIDLINES;

    var style = SendMessage(
            listView.Handle,
            LVM_SETEXTENDEDLISTVIEWSTYLE,
            0,
            style);    
}

它有效了,我可以看到一个浅蓝色的边框。我该如何改变颜色和线条粗细? - Nick
我不知道有任何改变边框颜色或厚度的方法(尽管我也从未寻找过这样的方法)。 - ctacke
如果有一天你知道了答案,请告诉我。 - Nick

1

在紧凑框架下,ListView不支持网格线。您可以使用DataGridView。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接