我的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);