【问题标题】:Can we keep the Form scrollbar but prevent the form from auto-scrolling to the focused control?我们可以保留表单滚动条但防止表单自动滚动到焦点控件吗?
【发布时间】:2019-04-02 20:37:26
【问题描述】:

我想防止我的表单在底部的控件获得焦点时自动滚动,但如果滚动条出现,我仍然保留它们。

由于某些用户的屏幕分辨率略低于表单,因此有时会出现滚动条。这造成了一些 DataGridView 的问题。由于启用了AutoScroll 选项,当单击 DataGridView 时,它会执行多选,因为我们单击它会移动。

当我禁用AutoScroll 属性时,滚动条消失。因此,用户无法看到所有内容。

有没有办法禁用AutoScroll,但仍保留滚动条?

【问题讨论】:

  • 好的,所以您想禁用自动滚动,但仍将其保持在屏幕上可见?这是否意味着您仍然希望用户使用它或不使用它?对我来说没有多大意义,只需将它们留在屏幕上,以便用户可以在需要时使用它们,如果它导致您拥有的某些代码出现问题,请重构问题代码。滚动条的存在是有原因的,以帮助在需要时查看其他对象。
  • @Çöđěxěŕ 我的问题不在于我的代码,而在于“自动滚动”本身。当用户点击屏幕下方的 DGV 时,表单将自动滚动到该位置。这就是我试图禁用自动滚动的原因。这样做,它会禁用滚动条,如果用户愿意,他无法将屏幕居中。

标签: vb.net winforms scrollbar autoscroll


【解决方案1】:

如果我正确理解您的情况,您基本上希望用户能够手动滚动表单,但防止表单自动滚动到获得焦点的控件。

将此代码放入您的表单中:

Protected Overrides Function ScrollToControl(activeControl As Control) As Point
    'Return MyBase.ScrollToControl(activeControl)   ' <-- Keep this line commented.
End Function

结果:

【讨论】:

  • 我找过这个。我在做笔记。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-31
  • 1970-01-01
相关资源
最近更新 更多