需求:

滚动滚动条时显示pnlBack里面的button

文本框里输入数字,改变每行显示的按钮数

源码如下:

/// <summary>
/// 窗体加载
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void Form1_Load(object sender, EventArgs e)
{
InitialButtons();
}
/// <summary>
/// 往pnlBack中添加button并联动水平滚动条
/// </summary>
/// <param name="a">每行显示的button数,默认为15</param>
private void InitialButtons(int a = 15)
{
//初始化显示在pnlBack里面的button
if (txtCols.Text.Trim() != "")
{
int.TryParse(txtCols.Text.Trim(), out a);
if (a <= 0)
{
a = 15;
}
}
pnlBack.Controls.Clear();
for (int i = 0; i < 60; i++)
{
Button btn = new Button();
btn.Size = new Size(140, 80);
btn.Text = "Text" + (i + 1);
if (i < a)
{
btn.Location = new Point(i * 140 + (i + 1) * 10, 10);
}
else if (i < 2 * a)
{
btn.Location = new Point((i - a) * 140 + (i + 1 - a) * 10, 100);
}
else if (i < 3 * a)
{
btn.Location = new Point((i - 2 * a) * 140 + (i + 1 - 2 * a) * 10, 190);
}
else
{
btn.Location = new Point((i - 3 * a) * 140 + (i + 1 - 3 * a) * 10, 280);
}
pnlBack.Controls.Add(btn);
}
pnlBack.Width = 10 + (10 + 140) * a; //初始化水平滚动条
Hsb.Maximum = pnlBack.Width + 20;
Hsb.Minimum = 0;
Hsb.LargeChange = pnlOwner.Width;
Hsb.SmallChange = 5;
}
//水平滚动条滚动
private void Hsb_Scroll(object sender, ScrollEventArgs e)
{
pnlBack.Left = pnlBack.Left - (e.NewValue - e.OldValue);
}
//更改每行的按钮数目
private void btnOk_Click(object sender, EventArgs e)
{
InitialButtons();
}

  

winform水平滚动条联动panel的更多相关文章

  1. winform listbox 使用DrawMode使用OwnerDrawVarialbe或OwnerDrawFixed无水平滚动条

    因为需要使用DrawMode自行DrawItem,所以需要将DrawMode设置为OwnerDrawVarialbe或OwnerDrawFixed模式,代码如下: private void listB ...

  2. html页面内容超出后显示水平滚动条的问题

    这个问题已经遇到好几次,解决起来也熟练了很多.   出现这种问题一般都是html或页面中的某一内部元素宽度超了. 下面总结我遇到的几种情况: 1.某一内部元素width设为100%,然而它还有bord ...

  3. ProgressBar显示进度值,垂直或者水平滚动条

    过去一段时间,在研究Windows的系统控件ProgressBar,一直奇怪为啥它不能显示进度值,本以为是个很简单的问题,结果搜索很久,也没有找到好的解决方案,最后终于找到一个Perfect方案,特记 ...

  4. 关于iframe的滚动条,如何去掉水平滚动条或垂直滚动条

    关于iframe的滚动条,如何去掉水平滚动条或垂直滚动条 关于<iframe>可以通过设置属性scrolling="no" 去掉iframe的两个滚动条. 如何只去掉水 ...

  5. 向table添加水平滚动条

    转自:http://www.cnblogs.com/linjiqin/p/3148225.html <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4. ...

  6. fancybox去除不受待见的水平滚动条

    用fancybox在嵌套某个页面时,有时莫名其妙的会出现的消除不掉的幽灵般水平滚动条,如何去除: github上的解决方案:https://github.com/fancyapps/fancyBox/ ...

  7. delphi 去掉TreeView水平滚动条

        使用API函数:声明 FUNCTION ulong ShowScrollBar(ulong hwnd,ulong wBar,ulong bShow) LIBRARY "user32. ...

  8. 为TListBox添加水平滚动条

    为TListBox添加水平滚动条 实例说明 TListBox组件是一个较为常用的列表组件,在默认情况下该组件是没有水平滚动条的,所以文字过长会显示不完全,在文字较短的情况下还可以,但是如果一行的文字很 ...

  9. WPF Bug清单之(13)——应该出现却没有出现的ListView水平滚动条

    转载地址:http://www.cnblogs.com/nankezhishi/archive/2010/03/17/wpfbug13.html 我们知道ListView在内容超出控件本身范围时,默认 ...

随机推荐

  1. 用python语言讲解数据结构与算法

    写在前面的话:关于数据结构与算法讲解的书籍很多,但是用python语言去实现的不是很多,最近有幸看到一本这样的书籍,由Brad Miller and David Ranum编写的<Problem ...

  2. MySQL模糊查询(like)时区分大小写

    问题说明:通过上面的语句,你会发现MySQL的like查询是不区分大小写的,因为我的失误,把Joe写成了joe才发现了这个东东吧.但是,有时候,我们需要区分大小写的是,该怎么办呢?解决方法如下: 方法 ...

  3. [常见问题]Project facet Java versin 1.8 is not support.

    发生这个问题的原因是我们的java编译环境(JDK版本),与tomcat运行环境(JDK或JRE版本)不一致导致的. 到eclipse的设置中找到compile项(或右键项目进入),看一下编译环境的J ...

  4. fildder 使用方法汇总

    作为网络开发人员,怎能不使用一些抓包工具呢?fildder是个不错的选择. 不过,一般情况下,我们往往使用浏览器自带的控制台的[网络]选项就可以达到查看数据的通信情况了,当然,一些浏览器不容易捕捉的事 ...

  5. fir.im Weekly - 如何做一个出色的程序员

    做一个出色的程序员,困难而高尚.本期 fir.im Weekly 精选了一些实用的 iOS,Android 开发工具和源码分享,还有一些关于程序员的成长 Tips 和有意思有质量的线下活动~ How ...

  6. java之设计模式

    一.代理模式 a.抽象角色(接口):声明真实对象和代理对象的共同接口 b.代理角色:代理对象角色内部含有对真实对象的引用,从而可以操作真实对象,同时代理对象提供与真实对象相同的接口以便在任何时刻都能替 ...

  7. ssh(sturts2_spring_hibernate) 框架搭建之spring

    一.spring总结: ⑴.spring是一个轻量级的JAVA开发框架,主要的作用是用来管理实例(可以解决JAVA类中new对象的问题,节省内存资源.)和降低代码之间的耦合性,促进代码模块化. ⑵.促 ...

  8. 谈谈主函数main

    我们来看一下主函数 public class HelloWorld{ public static void main(String[] args){ System.out.println(" ...

  9. SQL Server中关于跟踪(Trace)那点事

    前言 一提到跟踪俩字,很多人想到警匪片中的场景,同样在我们的SQL Server数据库中“跟踪”也是无处不在的,如果我们利用好了跟踪技巧,就可以针对某些特定的场景做定向分析,找出充足的证据来破案. 简 ...

  10. maven+spring+springMVC+mybatis+dubbox

      milestone 2016612  dubbox+spring+mybatis provider调通