zoukankan      html  css  js  c++  java
  • winform水平滚动条联动panel

    需求:

    滚动滚动条时显示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();
    }
    

      

  • 相关阅读:
    Lua如何管理”package”
    Lua: 好的, 坏的, 和坑爹的
    Lua中metatable和__index的联系
    Lua5.3 注册表 _G _ENV
    采访 Lua 发明人的一篇文章
    Lua的函数调用和协程中,栈的变化情况
    理解 Lua 的那些坑爹特性
    高性能 Lua 技巧(译)
    LLVM每日谈21 一些编译器和LLVM/Clang代码
    上Https 和 http 差分
  • 原文地址:https://www.cnblogs.com/zhyue93/p/ScrollBar.html
Copyright © 2011-2022 走看看