自定义Windows窗体滚动条

And*_*ers 8 .net vb.net controls scrollbar winforms

我在没有正确答案的情况下搜索了万维网.

在我的Windows窗体应用程序中,我想更改属于FlowLayoutPanel的滚动条的宽度.

由于Flow Layout Panel的内容比Form大,因此"自动"添加滚动条.

从我在网上发现的内容来看,这似乎很棘手.

这有什么解决方案吗?

干杯!

Cod*_*ray 18

不,没有办法更改单个控件上显示的滚动条的宽度(尽管系统范围的设置会影响所有应用程序中的所有滚动条).

丑陋的事实是低滚动条控制远比它看起来复杂得多.基本上,FlowLayoutPanel由于在幕后为控件设置的WS_HSCROLL和/或WS_VSCROLL窗口样式,由Windows本身(而不是.NET Framework)绘制的滚动条.在FlowLayoutPanel不提供任何设施变更或修改这些内置的滚动条的绘制方式.与WinForms中的其他更高级的修改不同,我们不能将这些消息发送到控件的窗口过程.更糟糕的是,滚动条是在非客户区域中绘制的FlowLayoutPanel,这意味着我们不能仅仅覆盖它的Paint事件并自己处理滚动条的绘制.

不幸的是,如果你真的想要自定义你的滚动条,你将不得不隐藏内置滚动条并滚动自己的滚动条.然而,如果你想要的话,它并不像听起来那么困难.关于CodeProject的这篇文章提供了一个很好的演练,可以创建自己的可换肤滚动条作为用户控件,并将其用作您选择的容器控件的替代品.