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();
    }
    

      

  • 相关阅读:
    配置Gitlab pages和Gitlab CI
    程序员不应该错过的 6大导航
    Ice简介+Qt代码示例
    Android开发者的Anko使用指南(四)之Layouts
    三种方式绘制图片
    产品-(前后端)开发-测试的见解
    01_Docker概念简介、组件介绍、使用场景和命名空间
    Docker 创建 Confluence6.12.2 中文版
    读再多懂再多的鸡汤,不如每天敲码思考总结
    Postman Mock Server
  • 原文地址:https://www.cnblogs.com/zhyue93/p/ScrollBar.html
Copyright © 2011-2022 走看看