Как определить, какой UserControl находится в верхней части FlowLayoutPanel? - PullRequest
0 голосов
/ 26 марта 2011

Я создаю бухгалтерское программное обеспечение и веду Главную книгу. Теперь у меня есть план UserControl с именем Entry, который показывает и имеет свойства с именем: Date, Details, Amount. У меня есть два FlowLayoutControls, один для дебета, один для кредита.

Чего я хочу достичь:

Когда я сдвигаю сторону дебета вниз, я хочу, чтобы кредит автоматически переходил к записи с той же или близкой датой. Или к тому же месяцу, когда книга сбалансирована.

Моя идея:

Определите самое высокое видимое UserControl, получите его значение Date. Затем, с другой стороны, просмотрите каждый элемент UserControl и его значение Date и прокрутите его до значения, которое лучше всего соответствует приведенному выше описанию.

Может ли кто-нибудь помочь мне с кодированием и свойствами FlowLayoutPanels для достижения этой цели?

Спасибо.

1 Ответ

1 голос
/ 27 марта 2011

Реализация события прокрутки FLP. Итерируйте его элементы управления и выясните, какой из них находится вверху:

    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, чтобы найти соответствующий элемент управления, установите AutoScrollPosition в FLP, чтобы прокрутить его в поле зрения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...