【问题标题】:How to scroll to down to multiple rows of dynamic controls in panel in c sharp如何在c sharp中向下滚动到面板中的多行动态控件
【发布时间】:2015-05-07 22:41:15
【问题描述】:

我有一个应用程序,我需要在其中向面板添加动态控件 基于在文本框中输入的数字的值。 例如 5 表示我在按钮单击事件上生成 5 行控件。 问题是当输入一个大数字(例如 50)时,虽然 添加了 50 行动态控件,我无法向下滚动到每个 50 行。

 private void button1_Click(object sender, EventArgs e)
    {

        int inputNumber = Int32.Parse(textBox1.Text);
        int wid=0;
            int  hgt = 0;
        for (int i = 1; i <= inputNumber; i++)
        {
            //Create a new label and text box
            Label labelInput = new Label();
            TextBox textBoxNewInput = new TextBox();
            ComboBox cb = new ComboBox();
            //Initialize label's property
            labelInput.Text = "Input " + i;
            labelInput.Location = new Point(30, textBox1.Bottom + (i * 30));
            labelInput.AutoSize = true;

            //Initialize textBoxes Property
            textBoxNewInput.Location = new Point(labelInput.Width, labelInput.Top - 3);
            cb.Location = new Point(textBoxNewInput.Width + labelInput.Width + 10, textBoxNewInput.Top);
            hgt += textBoxNewInput.Top;

            //Add the labels and text box to the form
            panel1.Controls.Add(labelInput);
            panel1.Controls.Add(textBoxNewInput);
            panel1.Controls.Add(cb);

        }
        ScrollBar vScrollBar1 = new VScrollBar();
      vScrollBar1.Dock = DockStyle.Right;
       vScrollBar1.Scroll += (mender, f) => { panel1.VerticalScroll.Value = vScrollBar1.Value; };
        panel1.Controls.Add(vScrollBar1);
        Controls.Add(panel1);
       }

我怎样才能从第 1 行滚动到第 100 行或第 500 行(视情况而定)?

谢谢

【问题讨论】:

    标签: c# winforms scroll panel


    【解决方案1】:

    我做了进一步的研究,我得到了答案:

    我删除了这些代码行

           ScrollBar vScrollBar1 = new VScrollBar();
          vScrollBar1.Dock = DockStyle.Right;
          vScrollBar1.Scroll += (mender, f) => { panel1.VerticalScroll.Value = vScrollBar1.Value; };
            panel1.Controls.Add(vScrollBar1);
    

    我只是设置了自动滚动属性

         panel1.AutoScroll=true;
    

    工作正常

    【讨论】:

      【解决方案2】:

      不确定您为什么不使用grid?而是操纵网格。

      【讨论】:

      • 是的。通常他们有陡峭的学习曲线——但这是值得的。问题是因为您的下一个问题可能是“我的客户不希望一次完成 500 行。我如何实现分页?” :P
      • 我决定使用 gridview ,从长远来看,使用 DataGridViewComboBoxColumn 和 DataGridViewTextBoxColumn 似乎会更容易。
      猜你喜欢
      • 2018-12-24
      • 2013-02-27
      • 1970-01-01
      • 1970-01-01
      • 2011-12-01
      • 2012-01-04
      • 1970-01-01
      • 1970-01-01
      • 2015-05-24
      相关资源
      最近更新 更多