如何在Panel中的TableLayoutPanel上将特定控件滚动到视图中

时间:2016-04-29 21:34:50

标签: winforms panel autoscroll tablelayoutpanel

我的TableLayoutPanel包含不同数量的自定义用户控件,具体取决于它需要显示的项目列表的大小。有时候列表很长,用户想要一种直接滚动的方式或者#34; jump"使用CTRL-F样式搜索的控件,或多或少。

到目前为止,我还没有能够使用ScrollControlIntoView方法完成这项工作,并希望得到一些提示。在下面的测试代码中,Find方法找不到名称为" uc3"的控件,其中一个自定义用户控件已放置在TableLayoutPanel上,即使查找method-search-child-controls参数设置为true

  

注意:我已确认uc3确实已创建。在我的测试中,   只有三个这样的控件,所有三个都可见   屏幕,我已经逐步完成了代码并看到了它们   创建,并且他们的名字被分配。

var ctl = this.splitContainerControl1.Panel2.Controls.Find("uc3", true);
if (ctl.Length> 0)      this.splitContainerControl1.Panel2.ScrollControlIntoView(ctl[0]);

我从简单面板(Panel2)调用ScrollControlIntoView方法,因为它是设置为AutoScroll的方法。 TableLayoutPanel将该属性设置为false

var skedcontainer = new VideoScheduleContainer(); // inherits from TableLayoutPanel
skedcontainer.Dock = DockStyle.Top;
skedcontainer.AutoSize = true;
skedcontainer.AutoSizeMode = AutoSizeMode.GrowAndShrink;
skedcontainer.AutoScroll = false; 
skedcontainer.DataSource = SCHEDULEDVIDEOS.AsDataView();           
this.splitContainerControl1.Panel2.AutoScroll = true;
this.splitContainerControl1.Panel2.AutoSize = false;
this.splitContainerControl1.Panel2.Controls.Add(skedcontainer);

0 个答案:

没有答案