【问题标题】:How to scroll bottom row of TableLayoutPanel into view如何将 TableLayoutPanel 的底行滚动到视图中
【发布时间】:2017-02-18 06:00:39
【问题描述】:

在运行时,我将控件添加到从 TableLayoutPanel 继承的控件中。根据用户交互,一次添加一个控件,而不是循环添加。

这是我从 TLP 继承的控件的设置:

this.RowCount = 0; 
this.RowStyles.Clear();
this.Dock = DockStyle.Fill;
this.VerticalScroll.Enabled = true;
this.HorizontalScroll.Enabled = false;
this.AutoScroll = true

我正在将用户控件添加到面板底部,如下所示:

var uc = new FooControl();
this.Controls.Add(uc);
this.SetRow(uc, this.Controls.Count - 1);
this.SetColumn(uc, 0);

我想将该行/控件滚动到视图中。

这是怎么做到的?

【问题讨论】:

    标签: c# .net winforms tablelayoutpanel


    【解决方案1】:

    要将控件滚动到ScrollableControl 中的视图中,例如TableLayoutPanel,您可以使用ScrollControlIntoView 方法。例如:

    this.ScrollControlIntoView(uc);
    

    注意:它不会选择控件。

    此外,如果您调用控件的Select 方法,它将被选中(如果可选择),并且它的可滚动父控件也将被滚动以将选定的子控件显示在视图中。例如:

    uc.Select();
    

    【讨论】:

      【解决方案2】:

      您可以通过设置面板的 VerticalScroll 来做到这一点,但我认为使用 ScrollControlIntoView 会更好。

      private void panel1_ControlAdded(object sender, ControlEventArgs e)
      {
          panel1.ScrollControlIntoView(e.Control);
      }
      

      panel.VerticalScroll.Value = panel.VerticalScroll.Maximum
      

      【讨论】:

      • panel.VerticalScroll.Value = panel.VerticalScroll.Maximum 实际上不起作用。你可能想测试一下。
      猜你喜欢
      • 1970-01-01
      • 2020-08-09
      • 1970-01-01
      • 2011-08-31
      • 2021-12-11
      • 1970-01-01
      • 2011-01-25
      • 2016-10-08
      • 2016-07-10
      相关资源
      最近更新 更多