我正在开发一个非常简单的表格布局应用程序,以开始学习C#。我正在以编程方式做所有事情(不是通过设计编辑器)
我正在尝试在应用程序上添加滚动。它似乎工作正常,但默认情况下似乎并没有从水平范围的顶部开始。我尝试添加最大/最小尺寸,自动滚动边距等内容,但似乎没有任何效果。我确信我缺少一些简单的东西。
这是我当前与问题有关的代码。
layout = new TableLayoutPanel();
layout.Height = 1075;
layout.Width = 704;
layout.Name = "masterLayout";
layout.Dock = DockStyle.Fill;
layout.AutoScroll = true;
int i = 0;
foreach (Race r in ELECTION_DATA.races.OrderBy(o => o.race_id)) {
layout.Controls.Add(new Label { AutoSize = true, Text =r.race_id, Name=r.race_id, Width=300}, i, 0 );
layout.Controls.Add(new TreeView { AutoSize = true, Text = r.race_id, Name = r.race_id, Height = 1000, Width = 300 }, i,1);
i += 1;
}
Controls.Add(layout);
这里是图像,标签控件不可见,因为滚动偏移到树形视图的开头。
如何确保滚动始终从最顶部开始?
答案 0 :(得分:0)
ScrollLayoutPanel具有一个名为ScrollControlIntoView
的方法,该方法会将面板内的特定控件移入视图。如果在完成面板填充后仅将第一个控件滚动到视图中,则应确保顶部可见。换句话说:
// do your loop first...
foreach (...)
{
layout.Controls.Add(...);
}
// then if any controls exist, scroll the first control into view
if (layout.Controls.Count > 0)
{
layout.ScrollControlIntoView(layout.Controls[0]);
}