Привязанный элемент управления покидает форму сам по себе - PullRequest
2 голосов
/ 11 июля 2009

У меня есть встроенный элемент управления с несколькими элементами управления вводом, несколькими текстовыми полями, полем со списком и списком. Одно текстовое поле, поле со списком, список и пара командных кнопок привязаны так, чтобы они изменяли размеры формы. Поле со списком привязано слева, сверху и справа, поле со списком закреплено со всех четырех сторон, а кнопки закреплены снизу и справа. Все они изменяют размер и сохраняют свою позицию правильно. Проблема в том, что я пытаюсь закрепить текстовое поле, как в поле со списком. Он бежит с правой стороны формы во время выполнения, когда закреплен справа. Тем не менее, у меня нет этой проблемы ни с одним из существующих элементов управления в форме, которые привязаны справа, все они остаются в положении, как они должны.

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

Для справки, я манипулировал сгенерированным дизайнером кодом, чтобы изменить порядок операторов так, чтобы привязка происходила после установки позиции и ширины, но это не помогло. Вот код для неправильного текстового поля:

        // 
        // txtComments
        // 
        this.txtComments.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
                    | System.Windows.Forms.AnchorStyles.Right)));
        this.txtComments.Location = new System.Drawing.Point(430, 6);
        this.txtComments.Name = "txtComments";
        this.txtComments.Size = new System.Drawing.Size(166, 20);
        this.txtComments.TabIndex = 25;

И код для правильного поведения комбобокса:

        // 
        // cbMacroList
        // 
        this.cbMacroList.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
                    | System.Windows.Forms.AnchorStyles.Right)));
        this.cbMacroList.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
        this.cbMacroList.FormattingEnabled = true;
        this.cbMacroList.Location = new System.Drawing.Point(128, 78);
        this.cbMacroList.Name = "cbMacroList";
        this.cbMacroList.Size = new System.Drawing.Size(468, 21);
        this.cbMacroList.TabIndex = 30;
        this.cbMacroList.SelectedIndexChanged += new System.EventHandler(this.cbMacroList_SelectedIndexChanged);

И последнее замечание: все эти элементы управления вышли из формы, когда я решил, что мне нужно будет повторно использовать функциональность, предоставляемую формой, в другой форме. Я выбрал все элементы управления, вырезал их и затем вставил в новый UserControl. До перехода на UserControl все они работали нормально. Это начало проявляться после миграции.

Ответы [ 2 ]

1 голос
/ 11 июля 2009

Вы уверены, что ваш неправильный контроль не связан с чем-то, чего вы не ожидаете, например, с Panel или чем-то еще?

0 голосов
/ 13 июля 2009

Это довольно странно, но простое удаление элемента управления из формы и его повторное размещение решили проблему. Я пересмотрел сгенерированный дизайнером код в форме, в которой я использую элемент управления, и не вижу абсолютно никакой разницы в том, как он создается или добавляется в форму. И все же это исправлено. Интересно, почему бы так себя вести ...?

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