现在做一个系统是winform的,其中用到了listview做列表显示,listview存在缺陷
1>利用他现在有的功能,listview的列和行的间距不能够调整大小,除非你修改他的ImageList的大小,那么图标的大小就会变化
  这个可以用windows系统API函数解决,在Form 的Load事件里面加入:
 private int LVM_SETICONSPACING = 0x1035; 
[DllImport("user32.dll", CharSet = CharSet.Auto)]//set the width and height for the listview
 public static extern IntPtr SendMessage(IntPtr hWnd, int msg, int wParam, int lParam); 
 Win32API.SendMessage(this.myPoplistview.Handle, LVM_SETICONSPACING, 0, 0x10000 * 85 + 87);85和87分别是行间距和列间距
2>现在的问题是第一行与顶部的距离不能够改变,第一列与左边的距离不能能够改变,因为我不知道这个系统的API是什么,请问有哪位仁兄知道怎么调整listview与顶部和左部的间距吗?谢谢

解决方案 »

  1.   

    你可能参数不对,要不然就是发送方式不对. 这个消息需要POSTMESSAGE发送. 给你个测试代码: VB codeOption ExplicitPrivate Declare Function PostMessage Lib "user32.dll" Alias "PostMessageA" ( _
         ByVal hwnd As Long, _
         ByVal wMsg As Long, _
         ByVal wParam As Long, _
         ByVal lParam As Long) As Long
    Private Const WM_LBUTTONDBLCLK As Long = &H203
    Private Const MK_LBUTTON As Long = &H1Private Sub Command1_Click()
        PostMessage &HD0738, WM_LBUTTONDBLCLK, MK_LBUTTON, x + y * &H10000
    End Sub测试通过的. 教你个此类消息操作的方法: 使用SPY++先拦截一下人工操作时产生的消息,再由程序模拟一个一模一样的就基本上可以了:) 
      

  2.   

    SendMessage将指定的消息发送到一个或多个窗口
      

  3.   

    http://support.microsoft.com/kb/143406/zh-cn
      

  4.   

    谢谢各位的帮助,但是我现在还是没有找到怎么修改第一行和第一列距离边框的方法,To dqw120:我用的sendmessage是没有错误的,也许是你说的我传的参数错误了,但是我找不到应该传递什么样子的参数,还有SPY++我得抽时间去看看他的实现的原理才知道行不行,
    To  wuyq11:你给我的链接是修改行距和列距,现在这个功能我已经实现了,我需要的是修改第一行距离顶部的距离,和第一列距离左边框的距离
    To tan124:我确实用的sendmessage(),可以修改行距和列距。但是不可以修改第一行和第一列这个是我现在的问题