admin 管理员组文章数量: 1087139
2024年3月13日发(作者:linux计划任务提权)
为了程序的需要我定义了几个变量:
private int m_VBarWidth;
private int m_HBarHeight;
private VScrollBar m_VBar;
private HScrollBar m_HBar;
接下来,给变量们做了初始值或初始设置,代码放到构造函数里了:
this.m_VBarWidth = SystemInformaticalScrollBarWidth;
this.m_HBarHeight = SystemInformationtalScrollBarHeight;
ndLayout();
this.m_VBar = new VScrollBar();
this.m_HBar = new HScrollBar();
rllBars();
this.m_VBal += new ScrollEventHandler(_Scroll);
this.m_HBal += new ScrollEventHandler(_Scroll);
(this.m_VBar);
(this.m_HBar);
eLayout(true);
里面有一个函数setScrllBars();接下来会说到,只说这些代码的意图是向当前窗体或控
件里添加了两个滚动条并对其有些设置而已。
实际上所有的代码我是写到一个从Control继承下来的类,这里提到的所有代码几乎都在
这个类里完成。
我们不防设置一个虚拟的显示大小,比如300×200的大小,我们在控件里通过滚动条就滚
动这一个大小的区域,这里我们会想,如果控件的可见区域大于这个300×200的大小,滚
动条是没有必要显示出来的,如果控件可见区域要是小于这个区域了,滚动条要可见了,
有一个问题要说了,有一个可能的情况就是比如本来水平的滚动条不可见,但是因为垂直
的可见了使得控件的水平可见区减小了,这个情况可能引起水平滚动条的可见,若水平滚
动条可见又使得垂直方向的可见区域减小又会反向影响到了垂直滚动条的值。同样,水平
滚动条也可能把一个本不不可见的垂直的滚动条“挤”的显示出来,垂直滚动条的显示使
水平可见区域减小而要反向影响到水平滚动条的最大值。我曾试着用代码来协调这个情
况,但是直到现在我才找到一个较“合理”的做法,这个将在我说代码里有处理。
下一个问题就是我们知道在两个滚动条都显示的时候在控件的右下角有一个空白区域,这
也是个协调的难点。我曾试着对滚动条设置了两次来达到这个效果,但也是直到现在我才
否定了这个做法,采用一次设置了。
再下一个问题就是滚动条的本身的特有属性设置,比如LargeChange(最大滚动大小),Maxim
um(滚动的最大取值),当然还有Minimum,这个一般来说就是0了。从表面上我们看的清楚
,不就是这三个值吗?有什么?其实这里是有一个公式的。就是要设置到Maximum的值必
需进行与LargeChange-1相加运算,否则是不对的。
下面的方法体就试着解决了上面提到的三个问题,且是我的控件中最主要的部分,假设控
件中的两个滚动条就像一个多行的文本编辑框一样的情况出现两个滚动条,因为我只是提
到了对滚动条的设置,所以这个文里也就只有这一个方法,目的当然就是记录下,方便以
后查找了:
private void setScrllBars()
{
//设置垂直最大滚动值
int vLarge = t;
//设置水平最大滚动值
int hLarge = ;
版权声明:本文标题:CWinForm滚动条控件应用简介 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://roclinux.cn/b/1710288678a566269.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论