CWinForm滚动条控件应用简介.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
CWinForm滚动条控件应用简介

为了程序的需要我定义了几个变量: private int m_VBarWidth; private int m_HBarHeight; private VScrollBar m_VBar; private HScrollBar m_HBar; 接下来,给变量们做了初始值或初始设置,代码放到构造函数里了: this.m_VBarWidth = SystemInformation.VerticalScrollBarWidth; this.m_HBarHeight = SystemInformation.HorizontalScrollBarHeight; this.SuspendLayout(); this.m_VBar = new VScrollBar(); this.m_HBar = new HScrollBar(); this.setScrllBars(); this.m_VBar.Scroll += new ScrollEventHandler(this.VBar_Scroll); this.m_HBar.Scroll += new ScrollEventHandler(this.HBar_Scroll); this.Controls.Add(this.m_VBar); this.Controls.Add(this.m_HBar); this.ResumeLayout(true); 里面有一个函数setScrllBars();接下来会说到,只说这些代码的意图是向当前窗体或控件里添加了两个滚动条并对其有些设置而已。 实际上所有的代码我是写到一个从Control继承下来的类,这里提到的所有代码几乎都在这个类里完成。 我们不防设置一个虚拟的显示大小,比如300×200的大小,我们在控件里通过滚动条就滚动这一个大小的区域,这里我们会想,如果控件的可见区域大于这个300×200的大小,滚动条是没有必要显示出来的,如果控件可见区域要是小于这个区域了,滚动条要可见了,有一个问题要说了,有一个可能的情况就是比如本来水平的滚动条不可见,但是因为垂直的可见了使得控件的水平可见区减小了,这个情况可能引起水平滚动条的可见,若水平滚动条可见又使得垂直方向的可见区域减小又会反向影响到了垂直滚动条的值。同样,水平滚动条也可能把一个本不不可见的垂直的滚动条“挤”的显示出来,垂直滚动条的显示使水平可见区域减小而要反向影响到水平滚动条的最大值。我曾试着用代码来协调这个情况,但是直到现在我才找到一个较“合理”的做法,这个将在我说代码里有处理。 下一个问题就是我们知道在两个滚动条都显示的时候在控件的右下角有一个空白区域,这也是个协调的难点。我曾试着对滚动条设置了两次来达到这个效果,但也是直到现在我才否定了这个做法,采用一次设置了。 再下一个问题就是滚动条的本身的特有属性设置,比如LargeChange(最大滚动大小),Maximum(滚动的最大取值),当然还有Minimum,这个一般来说就是0了。从表面上我们看的清楚,不就是这三个值吗?有什么?其实这里是有一个公式的。就是要设置到Maximum的值必需进行与LargeChange-1相加运算,否则是不对的。 下面的方法体就试着解决了上面提到的三个问题,且是我的控件中最主要的部分,假设控件中的两个滚动条就像一个多行的文本编辑框一样的情况出现两个滚动条,因为我只是提到了对滚动条的设置,所以这个文里也就只有这一个方法,目的当然就是记录下,方便以后查找了: private void setScrllBars() { //设置垂直最大滚动值 int vLarge = this.Height; //设置水平最大滚动值 int hLarge = this.Width; //显示区域的高 int vValue = size.Height; //显示区域的宽 int hValue = size.Width; //滚动条的最大值 int vMaxValue = 0; int hMaxValue = 0; //垂直滚动条的可见标志 bool vVisible = false; //水平滚动条的可见标志 bool hVisible = false; if (vValue this.Height - 2 * this.m_BorderWidth) { //垂直方向上显示区域高大于窗口高时,垂直滚动条直接可见 vVisible = true; //垂直滚动条宽影响

文档评论(0)

zilaiye + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档