面板滚动c#

时间:2015-01-16 11:21:53

标签: c# .net winforms

我有一个执行一系列汇编命令的项目。命令位于面板中(autoscroll = true),并且每次要执行的行都会突出显示。

问题在于,如果命令数量大于数字,则屏幕上不会显示突出显示的文本,用户必须手动向下滚动面板才能看到它。

我想要的是自动更改滚动焦点,以便用户在突出显示时可以看到隐藏的文本。所有文本都使用表格布局面板排列在表格中。

如下所示,当命令超过“0040001C”时,文本仍然突出显示但无法显示给用户。 enter image description here

因此,用户必须手动向下滚动才能看到正在执行的其余文本。 任何帮助? enter image description here

1 个答案:

答案 0 :(得分:2)

请参阅this answer,了解如何将Panel滚动到指定位置。

它会在您需要显示的位置创建一个新控件,然后使用Panel.ScrollControlIntoView方法强制面板滚动到它。

你可以在这里使用类似的方法。每当突出显示一行时,确定Panel中该行的左上角的位置(如何执行此操作取决于绘制表格的方式)。将其设为System.Drawing.Point并将其命名为location

然后致电

location = new Point(location.X - 4, location.Y)

现在,您可以在该位置创建一个新控件(假设您的面板名为panel1)

var control = new Control();
control.Location = location;
panel1.Controls.Add(control);

最后,请致电

panel1.ScrollControlIntoView(control)

这应该将您的Panel滚动到location指示的位置。

不要忘记通过调用

来摆脱新控件
panel1.Controls.Remove(control)