码迷,mamicode.com
首页 > Windows程序 > 详细

winform水平滚动条联动panel

时间:2016-07-19 18:55:39      阅读:225      评论:0      收藏:0      [点我收藏+]

标签:

技术分享

需求:

滚动滚动条时显示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

标签:

原文地址:http://www.cnblogs.com/zhyue93/p/ScrollBar.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!