2014-09-20 54 views
0

FlowLayoutPanel中有一些用户控件。每个用户控件都有其用户控制信息的标签。FlowLayoutPanel:更改内部项目值/文本使其滚动错误

的FlowLayoutPanel的属性:

AutoScroll = true 
WrapContents = false 

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

如何解决此滚动问题?


OK,这里是一个演示GIF文件,它的第一部分显示,滚动运作良好不点击物品(更改值),第二部分地方证明滚动棍棒打倒单击某个项目(其改变值)。

FlowLayoutPanel problem with inner items changes

  • 我应该说,FlowLayoutPanel.PerformLayout()不FlowLayoutPanel中的内部项目工作。

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

+0

几次阅读您的问题后,我仍然不确定发生了什么。你能多解释一下吗?标签是否超出用户控件?你可以张贴图片吗? – TaW 2014-09-20 07:33:32

+1

酷炫演示!但我无法复制。你可以为你正在使用的平台添加一个标签(WPF或Winfiorms ?!)我假设你没有用Focus,SelectNextControl或类似的东西做有趣的事情吗? – TaW 2014-09-20 11:29:12

回答

0

解决!

将此代码放入usercontrol代码中完成的解决方案。

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

它消除了该FlowLayoutPanel的焦点。

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