【问题标题】:Panel Scroll c#面板滚动 c#
【发布时间】:2015-03-14 23:52:12
【问题描述】:

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

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

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

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

因此,用户必须手动向下滚动才能查看正在执行的其余文本。 有什么帮助吗??

【问题讨论】:

  • 不使用 ListView 或 DataGridView 绝不是一个错误。您可以设置面板的 AutoScrollPosition 属性。

标签: c# .net winforms


【解决方案1】:

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

它在您需要使其可见的位置创建一个新控件,然后使用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)

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

不要忘记通过调用来摆脱新控件

panel1.Controls.Remove(control)

【讨论】:

  • 感谢您的解决方案!我即将开始思考你写的东西,如果我需要任何进一步的帮助,我会告诉你的!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-02
  • 2012-01-27
  • 2018-06-19
  • 2010-11-29
相关资源
最近更新 更多