【问题标题】:FlowLayoutPanel: changing inner items value/text makes its scroll wrongFlowLayoutPanel:更改内部项目值/文本使其滚动错误
【发布时间】:2014-09-20 07:17:42
【问题描述】:

FlowLayoutPanel 中有一些用户控件。每个用户控件都有其用户控件信息的标签。

FlowLayoutPanel 属性:

AutoScroll = true
WrapContents = false

通过点击用户控件(背景)标签信息得到更新。但是如果您在 FlowLayoutPanel 中有许多用户控件并且具有自动滚动属性,则在单击项目时滚动会出错,看起来就像您单击用户控件的滚动棒的顶部。

如何解决这个滚动问题?


好的,这是一个演示 GIF 文件,它的第一部分演示了滚动在不单击项目的情况下效果很好(这会改变值)第二部分演示滚动会在点击一个项目时粘在某个地方(这会改变一个值)。

  • 应该说 FlowLayoutPanel.PerformLayout() 不能通过 FlowLayoutPanel 的内部项起作用。

*** 即使点击 FlowLayoutPanel 中的区域也会导致问题!我没有测试它。

【问题讨论】:

  • 在阅读了您的问题几次之后,我仍然不确定发生了什么。你能再解释一下吗?标签是否从用户控件中生长出来?可以发张照片吗?
  • 酷演示!但是我无法重现。您能否为您正在使用的平台(WPF 或 Winfiorms?!)添加一个标签?我假设您没有用 Focus、SelectNextControl 等做有趣的事情?

标签: c# winforms user-controls scroll flowlayoutpanel


【解决方案1】:

解决了!

将此代码放在用户控件代码中完成的解决方案。

 private void ResControl_MouseDown(object sender, MouseEventArgs e)
 {
   this.Parent.Parent.Controls[0].Focus();
 }

它会移除该 FlowLayoutPanel 上的焦点。

  • 请注意,代码中有两个Parent,因为必须捕获表单。用户控件位于 FlowLayoutPanel 中,而 FlowLayoutPanel 位于表单中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-05-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-12
    相关资源
    最近更新 更多