Управление привязкой в Visual Studio 2010

#winforms #visual-studio #visual-studio-2010 #windows-forms-designer

#winforms #visual-studio #visual-studio-2010 #windows-forms-designer

Вопрос:

Я вроде как просто придираюсь здесь, но, возможно, есть простое решение, которое сэкономит мне некоторое время.

Когда я рисую свой графический интерфейс Winforms в конструкторе, элементы управления привязываются к определенным точкам. Я могу выровнять базовую линию текста одного элемента управления по тексту другого, я могу выровнять левую и / или верхнюю часть одного элемента управления по отношению к другому и т.д. Это все замечательно.

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

Однако не все привязывается правильно или вообще. Допустим, я вставил свои текстовые поля и теперь хочу уменьшить ширину своей формы, чтобы между краями текстовых полей и краем формы не было пробелов. Кроме того, я хочу, чтобы расстояние между краями текстовых полей и краем формы было таким же слева, как и справа. Если я перетащу правый край формы влево, к текстовым полям, она не будет привязываться. Мне остаются либо вычисления, чтобы определить, какой должна быть ширина, либо манипулирование, чтобы постепенно уменьшать ширину, пока текстовое поле не будет привязано как слева, так и справа.

Я не говорю, что этот процесс особенно сложен или отнимает много времени. Просто, если бы это была привязка, весь процесс был бы бесконечно проще.

Есть ли встроенная опция в VS2010 или, возможно, расширение? Или, может быть, я просто делаю это неправильно в первую очередь?

Ответ №1:

Линии привязки в конструкторе отлично работают при перемещении или изменении размера любого из встроенных элементов управления. Единственный раз, когда они не работают, — это когда вы изменяете размер самой формы.

    

Я согласен, что было бы чрезвычайно удобно иметь линии привязки и здесь. Хотел бы я знать способ включить это. Но, к сожалению, я не верю, что оно существует.

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

Ответ №2:

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

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

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