六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 57|回复: 0

[ListView.View=List]的垂直滚动条

[复制链接]

升级  51.15%

661

主题

661

主题

661

主题

探花

Rank: 6Rank: 6

积分
2023
 楼主| 发表于 2013-2-5 09:07:27 | 显示全部楼层 |阅读模式
该问题来自论坛提问,当ListView.View=List时,滚动条只能是水平的,解决这个问题需要子类化ListView处理WndProc消息,通过Windows API函数来设置它的滚动条。
演示代码:
using System;using System.Drawing;using System.Windows.Forms;namespace WindowsApplication1{    public partial class Form1 : Form    {        /// <summary>        /// 子类化ListView,在View属性是List的时候出垂直滚动条        /// by jinjazz        /// http://blog.csdn.net/jinjazz        /// </summary>        public class ListViewEx : ListView        {            [System.Runtime.InteropServices.DllImport("user32.dll")]            public static extern int ShowScrollBar(IntPtr hWnd, int iBar, int bShow);            const int SB_HORZ = 0;            const int SB_VERT = 1;            protected override void WndProc(ref Message m)            {                if (this.View == View.List)                {                    ShowScrollBar(this.Handle, SB_VERT, 1);                    ShowScrollBar(this.Handle, SB_HORZ, 0);                }                base.WndProc(ref m);            }        }                /// <summary>        /// 测试代码        /// </summary>        public Form1()        {            InitializeComponent();            //测试普通listview            ListView list = new ListView();            list.View = View.List;            this.Controls.Add(list);            list.Size = new Size(100, 100);            list.Location = new Point(100, 100);            for (int i = 0; i < 100; i++)            {                list.Items.Add(new ListViewItem(Guid.NewGuid().ToString()));            }            //测试子类化的listview            list = new ListViewEx();            list.View = View.List;            this.Controls.Add(list);            list.Size = new Size(100, 100);            list.Location = new Point(300, 100);            for (int i = 0; i < 100; i++)            {                list.Items.Add(new ListViewItem(Guid.NewGuid().ToString()));            }        }           }}
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表