Поддержка времени разработки пользовательских элементов управления - PullRequest
1 голос
/ 08 марта 2011

У нас есть класс, который автоматически масштабирует все элементы управления в форме, когда пользователь изменяет размеры формы.Все, что нужно, - это создать экземпляр класса в форме один раз при загрузке формы (установить и забыть).

Проблема в том, что вы должны передать размеры оригинального конструктора при загрузке формы.Это означает, что он должен быть жестко закодирован и изменен вручную, если дизайнер изменяет размер формы во время разработки.

Я подумываю изменить это на компонент, который можно удалить в форме.Я думаю, что это позволит мне получить настройки дизайнера, как это происходит в InitializeComponents (), так что вам не придется получать его позже при загрузке формы.

Однако у меня нет опыта работы с UserControls.

Я не собираюсь устанавливать значение свойства по умолчанию во время разработки, а хочу, чтобы оно было установлено в размере формыво время разработки и по мере того, как он изменяется в InitializeComponents () для формы, он будет меняться для этого элемента управления.

Кто-нибудь может подсказать мне какое-нибудь руководство, которое расскажет мне о поддержке времени разработки и как это сделать?

Я также ищу (менее важно) ограничить этот элемент управления только для формы.

РЕДАКТИРОВАТЬ: Я не ищу решения для вымогательства,Я хочу знать, как установить свойства пользовательского элемента управления во время разработки, чтобы связать его со свойством другого элемента управления (изменить при изменении этого элемента управления) во время разработки.

1 Ответ

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

Согласно комментарию @ Blorgbeard - похоже, вам следует использовать привязку / стыковку вместе с некоторыми из приятных элементов управления макетом (FlowPanel / TableLayoutPanel).В качестве альтернативы, более сложные операции определения размера можно выполнить в SetBoundsCore, что, я считаю, даст вам поддержку определения размера как во время выполнения, так и во время разработки:

    protected override void SetBoundsCore(int x, int y, int width, int height, BoundsSpecified specified)
    {
        // TODO: override parameter values (if in the specified set) with whatever values
        // that you calculate them to be. E.g. lock it as fixed width

        base.SetBoundsCore(x, y, width, height, specified);

        // TODO: update the size of child controls accordingly. 
    }

Хотя я бы сказал, что в настоящее время большинство "сложных операций определения размера"например, масштабирование дочерних элементов управления (% от общего размера) должно быть управляемым с помощью TableLayoutPanel.

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