C#:隐藏与显示textbox的滚动条

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#:隐藏与显示textbox的滚动条相关的知识,希望对你有一定的参考价值。

能不能隐藏textbox的滚动条,当文字足够多时才显示滚动条

textbox一般情况下的滚动条设置都是None啊,
textBox1.ScrollBars = ScrollBars.Horizontal;
你这里可以参考这个属性的几个值,默认提供的只有4中
None,both(成对有或者没有)
Horizontal(只显示横滚动条)
Vertical(只显示综滚动条)
如果这个不能实现你想要的功能,你可以先设置为None
在textchanged事件中判断text.length,如果超过了你想要的字数再动态设置这个属性为想要的属性。
不知道能不能令你满意
参考技术A 能啊 把那个什么属性 (忘了什么名了)设置成自动就行了

C#的自定义滚动条

VS工具箱自带的滚动条,不能设置颜色。

在网上找资源,找到一个控制TextBox的垂直滚动条,链接为http://www.cnblogs.com/2seek/p/4455079.html

在这个的基础上改成了控制Panel,最后效果如下图

源码下载地址:http://pan.baidu.com/s/1jI0nSs2

1. BackColor控制滚动条颜色

2. NormalColor、HoverColor(鼠标进入滚动条后)、ActiveColor(滑块被按下后)控制滑块颜色

3. RelaPanel控制关联的Panel控件

4. 须设置RelaPanel.AutoScroll = True,设置后当DisplayRectangle.Height > Size.Height时,自动出现垂直滚动条,此时拖动滚动条,才可通过VerticalScrollBar.Value控制Pane的显示

5. 隐藏Panel原来的滚动条:可以通过放置一个OuterPanel,OuterPanel里面放置一个InnerPanel,并添加如下代码

ScrollBar.RelaPanel = InnerPanel;

InnerPanel.AutoScroll = True;

InnerPanel.Width = OuterPanel.Width - 20;

来隐藏。

6. 需要横向滚动条,可以参照下面的关键点,计算滑块的位置,宽度。

 

修改的关键点在于:计算滚动条的滑块的高度,滑块的位置

一般而言Panel.Size.Height = ScrollBar.Height。

 

滑块大小的计算:

可以将整个滚动条看成是Panel全部信息的缩略图,那么,[滑块]在[滚动条]中所占比例 = [Panel可见区域]在[Panel工作区域]中所占比例。

即应该有:Panel.Size.Height/Panel.DisplayRectangle.Height = Slide.Height / ScrollBar.Height.

于是可以计算出滑块的高度为Slide.Height = Panel.Size.Height / Panel.DisplayRectangle.Height * ScrollBar.Height.

 

滑块位置的计算:

通过Panel的Scroll事件,输出VerticalScrollBar的信息可知,VerticalScrollBar的Minimum为0,Maximum为Panel.DisplayRectangle.Height-Panel.Size.Height-1,Value为当前显示区域左上角的Point.Y

所以,Slide.Location.Y / ScrollBar.Height = Panel.VerticalScrollBar.Value / Panel.DisplayRectangle.Height

于是可以计算出滑块的位置为Slide.Location.Y = Panel.VerticalScrollBar.Value/ Panel.DisplayRectangle.Height * ScrollBar.Height

 

Panel.VerticalScrollBar.Value的计算

通过上面的计算式反推:Panel.VerticalScrollBar.Value = Slide.Location.Y / ScrollBar.Height * Panel.DisplayRectangle.Height

 

这些全部弄好以后,发现在Panel使用鼠标滚轮,跟拖动滚动条都没问题。唯一,不清楚在滚动条上使用滚轮,Slide.Location.Y应为多少?

再次在通过Panel的Scroll事件,输出VerticalScrollBar的信息。认为鼠标滚轮每滚动一次,Value改变的值,可用VerticalScrollBar.SmallChange * SystemInformation.MouseWheelScrollLines来估算。

 

以上是关于C#:隐藏与显示textbox的滚动条的主要内容,如果未能解决你的问题,请参考以下文章

Asp.net开发(C#语言)中如何使textbox的滚动条自动滚动到最底端(或最新一行的信息的位置)

C#如何让panel显示滚动条

C# 滚动条问题

C# Winform 滚动条的问题

CSS如何隐藏滚动条?

CSS怎么隐藏滚动条