如何确定哪个UserControl位于FlowLayoutPanel的顶部?

时间:2011-03-26 20:47:03

标签: c# winforms user-controls

我正在创建类似会计的软件并执行总帐。现在我的计划是有一个名为Entry的UserControl,它显示并具有名为:Date,Details,Amount的Properties。我有两个FlowLayoutControls,一个用于借记,一个用于信用。

我想要实现的目标:

当我将借方面向下滑动时,我希望信用卡自动向下滑动到具有相同或附近日期的条目。或者在同一个月,当Ledger平衡时。

我的想法:

确定最高的可见 UserControl,获取其Date值。然后在另一边,浏览每个UserControl及其Date值,并将其滚动到最符合上述描述的值。

有人可以帮我解决FlowLayoutPanels的编码和属性,以实现这一目标吗?

谢谢。

1 个答案:

答案 0 :(得分:1)

实施FLP的Scroll事件。迭代它的控件,找出哪一个位于顶部:

    private void flowLayoutPanel1_Scroll(object sender, ScrollEventArgs e) {
        var top = new Point(1, 1);    // tweak if necessary
        foreach (Control ctl in flowLayoutPanel1.Controls) {
            if (ctl.Bounds.Contains(top)) {
                // Found the control, do your stuff
                //...
                break;
            }
        }
    }

ctl 转换为您的用户控件类型并检索所需的属性。然后迭代另一个FLP以找到匹配的控件,设置FLP的AutoScrollPosition将其滚动到视图中。