C#Listview(viewmode=Details)没有水平滚动条

C#Listview(viewmode=Details)没有水平滚动条,c#,winforms,C#,Winforms,如标题所示,我的ListView和View=Details有很多列,因此我希望用户能够在这些列上滚动。但是,尽管我将Scrollable属性设置为true,但没有显示水平滚动条。我该怎么办 我找了这么多,但以前没有人经历过 更新:我刚刚刷新了设计器,并且在设计器中出现了滚动条,但是当我执行/调试时,没有滚动条出现。我有另一种方法来解决这个问题,下面是我的解决方案: 步骤1.创建派生类型: public class ListViewEx : ListView { [System.Runti

如标题所示,我的
ListView
View=Details
有很多列,因此我希望用户能够在这些列上滚动。但是,尽管我将
Scrollable
属性设置为
true
,但没有显示水平滚动条。我该怎么办

我找了这么多,但以前没有人经历过


更新:我刚刚刷新了设计器,并且在设计器中出现了滚动条,但是当我执行/调试时,没有滚动条出现。

我有另一种方法来解决这个问题,下面是我的解决方案:

步骤1.创建派生类型:

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);
    }
}
步骤2.使用listview的派生类型:

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    private void Form1_Load(object sender, EventArgs e)
    {
        ListViewItem lvi1 = new ListViewItem("1");
        lvi1.SubItems.Add(Guid.NewGuid().ToString());
        ListViewItem lvi2 = new ListViewItem("2");
        lvi2.SubItems.Add(Guid.NewGuid().ToString());

        ListViewEx lve = new ListViewEx();

        ColumnHeader headerID = lve.Columns.Add("ID");
        ColumnHeader headerGUID = lve.Columns.Add("GUID");

        lve.View = View.Details;
        Controls.Add(lve);
        lve.Size = new Size(100, 100);
        lve.Items.AddRange(new ListViewItem[] { lvi1, lvi2 });
    }
}
步骤3.结果是:


希望这有帮助

你查过了吗?@RahulAgarwal在那个问题中问的视图模式是
LargeIcon
,我认为这是完全不同的。