Привязанный элемент управления покидает форму сам по себе

2

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

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

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

        // 
        // 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;

И код для корректного поведения combobox:

        // 
        // 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 все они работали нормально. Это начало появляться после миграции.

Теги:
winforms
layout
visual-studio-2008

2 ответа

0
Лучший ответ

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

  • 0
    Я сам испытал эту проблему сегодня с ListBox - правильно закреплен на моей машине, но не на другой. Я попытался удалить его из проекта и заново добавить, но это не решило проблему (даже закрывая VS между). В конце концов я заменил ListBox на TextBox (для меня это ошибка)
1

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

  • 0
    Я дважды проверил, и он добавляется к этому. this.Controls , так что нет панелей или что-либо, что мешает позиционированию и макету.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню