C#调用P/Invoke显示、隐藏和移动ListView 控件中的滚动条
2011-11-21 10:48
423 查看
小Demo演示如何调用P/Invoke显示、隐藏和移动ListView 控件中的滚动条
C#代码
运行效果图:
C#代码
using System; using System.Windows.Forms; using System.Runtime.InteropServices; namespace ProgramticallyScrollListView { public partial class frmScrollListView : Form { public frmScrollListView() { InitializeComponent(); } [DllImport("user32.dll")] static public extern bool ShowScrollBar(System.IntPtr hWnd, int wBar, bool bShow); [DllImport("user32.dll")] static public extern bool EnableScrollBar(System.IntPtr hWnd, uint wSBflags, uint wArrows); [DllImport("user32.dll")] static extern IntPtr SendMessage(IntPtr hWnd, uint Msg, UIntPtr wParam, IntPtr lParam); [DllImport("user32.dll", SetLastError = true)] static extern bool BringWindowToTop(IntPtr hWnd); private const uint SB_VERT = 1; private const uint ESB_DISABLE_BOTH = 0x3; private const uint ESB_ENABLE_BOTH = 0x0; private const int WM_VSCROLL = 0x115; private void frmScrollListView_Load(object sender, EventArgs e) { for (int j = 0; j < 300; j++) { this.listView1.Items.Add(j.ToString()); } EnableScrollBar(this.listView1.Handle, (int)SB_VERT, ESB_ENABLE_BOTH); } private void button1_Click(object sender, EventArgs e) { // 下移 SendMessage(this.listView1.Handle, (uint)WM_VSCROLL, (System.UIntPtr)ScrollEventType.SmallIncrement, (System.IntPtr)0); } private void button2_Click(object sender, EventArgs e) { // 上移 SendMessage(this.listView1.Handle, (uint)WM_VSCROLL, (System.UIntPtr)ScrollEventType.SmallDecrement, (System.IntPtr)0); } private void button3_Click(object sender, EventArgs e) { ShowScrollBar(this.listView1.Handle, (int)SB_VERT, true); // 显示 } private void button4_Click(object sender, EventArgs e) { ShowScrollBar(this.listView1.Handle, (int)SB_VERT, false); // 隐藏 } } }
运行效果图:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202005/11/c8a8581f19959b11746ff08edf41fc8c.gif)
相关文章推荐
- C# 在创建窗口句柄之前,不能在控件上调用 Invoke 或 BeginInvoke错误的解决办法
- Android WebView控件的显示,调用网页,然后隐藏
- VC隐藏、显示、移动、改变大小控件
- Android 控件的显示隐藏上下左右移动动画
- Android 控件的显示隐藏上下左右移动动画
- C#运行时鼠标移动控件 - 调用Windows API(ReleaseCapture)
- VC中隐藏、显示、移动、改变大小控件收藏
- Android实战简易教程-第五十一枪(ListView实现子控件的动态显示和隐藏、checkbox全选和反选)
- C#下使用Invoke调用窗体控件
- android 动态显示隐藏listview的headerview和headerview里的控件
- Qt5之控件的隐藏显示与移动
- C#中,当鼠标移动到控件上,动态显示提示内容 ToolTip
- 【学习】ListView中控制子控件的隐藏和显示
- Android Xlistview 或者 listview改变控件显示隐藏,chekBox状态发生改变,下拉,上划出现错乱。
- C#中的BackgroundWorker控件+Delegate.Invoke (委托同步调用)
- c#多线程(UI线程,控件显示更新) Invoke和BeginInvoke 区别
- C#计时器;控件移动;获取鼠标坐标;事件调用事件;
- C#中用Invoke调用控件方法和BeginInvoke线程使用方法
- android 动态显示隐藏listview的headerview和headerview里的控件
- 控制ListView(RecyclerView)中Adapter中的控件的显示和隐藏