Hide vertical scroll bar in ListBox control

前端 未结 2 1567
不思量自难忘°
不思量自难忘° 2021-01-18 06:06

I\'m developing an application that requires a ListBox control. Unfortunately, when I add too many items in the ListBox, a vertical scroll bar is s

相关标签:
2条回答
  • 2021-01-18 06:57

    Except from the horizontal scroll-bar, there is no way with normal use you can turn off the vertical scroll-bar.

    You can only set it always visible or auto using the property ScrollAlwaysVisible (also in VB).

    When you add item you can instead re-calculate ClientSize by calculating, something like this (untested, you might need to add Padding values to it as well):

     Size sz = new Size(ListBox1.ClientSize.Width, _
                        ListBox1.Items.Count * ListBox1.Font.Height);
     ListBox1.ClientSize = sz
    

    Of course, you should add check to the value in case it is zero, and/or you want a minimum/maximum height.

    0 讨论(0)
  • 2021-01-18 06:58

    The problem was solved. I've simply created a new project of template a class library with the following code

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    
    namespace ClassLibrary1
    {
        public class MyListBox : System.Windows.Forms.ListBox
        {
            private bool mShowScroll;
            protected override System.Windows.Forms.CreateParams CreateParams
            {
                get
                {
                    CreateParams cp = base.CreateParams;
                    if (!mShowScroll)
                        cp.Style = cp.Style & ~0x200000;
                    return cp;
                }
            }
            public bool ShowScrollbar
            {
                get { return mShowScroll; }
                set
                {
                    if (value != mShowScroll)
                    {
                        mShowScroll = value;
                        if (IsHandleCreated)
                            RecreateHandle();
                    }
                }
            }
        }    
    }
    

    Then, I've built the project outputting a new class library ClassLibrary1.dll

    On my main project, I've right-clicked the ToolBox and selected Choose Items.... Clicked on Browse... and selected the class library that I've recently created (ClassLibrary1.dll) and clicked on Open then on OK. Thus, I was able to have my custom ListBox which has no vertical scroll bars anymore.

    0 讨论(0)
提交回复
热议问题