C# 在列表框控件中隐藏垂直滚动条
我正在开发一个需要C# 在列表框控件中隐藏垂直滚动条,c#,winforms,listbox,C#,Winforms,Listbox,我正在开发一个需要ListBox控件的应用程序。不幸的是,当我在列表框中添加太多项目时,会显示一个垂直滚动条。我可以做些什么来隐藏列表框显示的垂直滚动条吗?我可以看到,有一个属性可以隐藏水平滚动条,但没有垂直滚动条的属性。除了水平滚动条,正常使用时无法关闭垂直滚动条 只能使用属性ScrollAlwaysVisible(也在VB中)将其设置为始终可见或自动 当您添加项时,您可以通过计算来重新计算ClientSize,类似于这样(未测试,您可能还需要向其添加填充值): 当然,如果值为零和/或需要最小
ListBox
控件的应用程序。不幸的是,当我在列表框
中添加太多项目时,会显示一个垂直滚动条。我可以做些什么来隐藏列表框显示的垂直滚动条吗?我可以看到,有一个属性可以隐藏水平滚动条,但没有垂直滚动条的属性。除了水平滚动条,正常使用时无法关闭垂直滚动条
只能使用属性ScrollAlwaysVisible
(也在VB中)将其设置为始终可见或自动
当您添加项时,您可以通过计算来重新计算ClientSize,类似于这样(未测试,您可能还需要向其添加填充值):
当然,如果值为零和/或需要最小/最大高度,则应在该值中添加检查。问题已解决。我只是用以下代码创建了一个新的模板项目a类库
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();
}
}
}
}
}
然后,我构建了一个输出新类库的项目ClassLibrary1.dll
在我的主项目中,我右键单击了
工具箱
,并选择了选择项…
。单击浏览…并选择我最近创建的类库(ClassLibrary1.dll),然后单击打开,然后单击确定。因此,我可以拥有我的自定义列表框
,它不再有垂直滚动条。如果删除垂直滚动条,用户将如何访问滚动条边缘以外的项目?@Leetylor感谢您的回复。我忘了提到我有一个RichTextBox。我已经成功地控制了RichTextBox中的列表框。因此,不需要在列表框中显示滚动条。祝你度过愉快的一天:)好的,我不知道有什么方法可以删除滚动条。我知道的唯一方法是确保列表框足够长,可以容纳所有项目。谢谢,我已经成功隐藏了创建类库的垂直滚动条。我将在稍后发布我的解决方案:)很好:-)正如您所问,是否可以使用ListBox控件完成此操作,我将保留我的答案:-)没有问题。谢谢你的回答。祝你今天愉快:)
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();
}
}
}
}
}