其实我的目的是想实现在listview中其中一列是三行的效果(标题和值都是三行),还要可以点击列标题排序,能控制最小列宽,还可以通过鼠标拖动现实列交换,我现在的途径是通过两个listview来实现(有点笨,不过没有什么好办法了),一个大的list作背景,上面放一个小的用来显示多标题的那行。这时候就有一个问题,就是不能用原有的滚动条了,我需要自己用滚动条控制listview滚动,同时移动上面的listview使他和后面的listview相对位置不变。上下滚动我已经基本解决了,现在是水平滚动没有办法.还有一个关键的问题就是鼠标拖动列,listview本身有这个功能,但是我其中一个列是用listview来代替的如果点击到上面的listview怎么才能实现列交换的效果呢。 hxinyu(小新)你所说的重画是什么概念,是通过调用方法让listview自己去画那部分嘛,还是自己手动划线用textout添值,我不太了解,希望能指教一下。 [DllImport("user32.dll")] public static extern int SendMessage(IntPtr hWnd, int msg, int wParam, int lParam); 这个是我调用的API,但是在c#中部支持WM_HSCORLL和WM_VSCORLL,我现在是直接取到了整形值作为参数传进去了,不知道这样用对不对,使用如下: SendMessage(listView5.Handle,276,0,0); 运行后没有效果,我不知道后面的两个参数该写什么值
public const int WM_LBUTTONDOWN = 0x0201; [DllImport("User32.dll",EntryPoint="SendMessage")] public static extern int SendMessage(IntPtr hWnd, int Msg, int wParam, int lParam); SendMessage(axWebBrowser1.Handle,WM_LBUTTONDOWN,0,0); 这样是向axWebBrowser1发送鼠标左键消息吗?
然后在滚动条的时间中调用窗体的Invalidate()事件执行重画
是一个listview,里面有n多数据,重画要死人的。
我已经用Spy++等到了那个消息,但是c#说命名空间中不存在。WM_HSCORLL和WM_VSCORLL
[DllImport("user32.dll")]
public static extern int SendMessage(IntPtr hWnd, int msg, int wParam, int lParam);
这个是我调用的API,但是在c#中部支持WM_HSCORLL和WM_VSCORLL,我现在是直接取到了整形值作为参数传进去了,不知道这样用对不对,使用如下:
SendMessage(listView5.Handle,276,0,0);
运行后没有效果,我不知道后面的两个参数该写什么值
[DllImport("User32.dll",EntryPoint="SendMessage")]
public static extern int SendMessage(IntPtr hWnd, int Msg, int wParam, int lParam);
SendMessage(axWebBrowser1.Handle,WM_LBUTTONDOWN,0,0);
这样是向axWebBrowser1发送鼠标左键消息吗?