Подтвердить что ты не робот

Скрытые особенности разработчика winforms Visual Studio

Одна из самых любимых и ненавистных функций визуальной студии должна быть разработчиком форм.

Создание простого шаблона управления формой/пользователем обычно является легким. Устанавливать свойства и добавлять события легко.

Настройка панели инструментов для использования ваших собственных элементов управления может быть немного сложнее, и появление объектов ToolBoxIcons для отображения может быть болью. Использование сторонних компонентов визуальным наследованием может вызвать конструктор. И использование множественного наследования на конструкторах может быть очень тяжелым.

Итак, каковы ваши любимые "скрытые" и/или визуальные дизайнерские дизайнерские функции.

4b9b3361

Ответ 1

  • Удерживайте CTRL и перетащите элемент управления, чтобы его дублировать.

ПРИМЕЧАНИЕ. Будьте осторожны, если ваш контроль имеет обработчик события, созданный дизайнер, он свяжет ваши вновь созданный элемент управления с событием обработчика, а также старого элемента управления.

  • Используйте комбинацию клавиш F7, чтобы перейти от представления конструктора к представлению кода, и Shift-F7 перейти от представления кода к представлению дизайнера. Я использую это постоянно

  • Окно "Структура документа" важно для использования в тяжелых дизайнерах. Это позволяет вам изменить порядок элементов управления в контуре, чтобы перенести их на передний план или отправить назад. Это особенно полезно, когда вы работаете с элементами управления док-станцией. Вы также можете переместить дочерний элемент управления в другой родительский элемент или вынуть его из элемента управления контейнера или переместить родителя в контейнер и т.д.

View -> Other Windows -> Document Outline

  • Панель инструментов "Макет" отлично подходит для выравнивания, чтобы сделать чистый пользовательский интерфейс.

View -> Toolbars -> Layout

Ответ 2

Когда дизайнер проекта WinForms открыт в форме или пользовательском элементе управления, и у вас есть вложенные дочерние элементы управления, вы можете перенести фокус с текущего сфокусированного дочернего элемента управления на его родительский элемент управления, нажав клавишу Escape. Нажатие клавиши Escape снова перемещает фокус на родителя и так далее, пока вы не достигнете вершины.

Ответ 3

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

myButton.Click += new System.EventHandler(this.myButtonClick)

Ответ 4

Вы можете добавить свои собственные привязки к UserControls.

Ниже приведен класс ниже CenterSquare, и к нему добавлен конструктор под названием CenterSquareSnapLines, который предоставляет список оснасток внутри элемента управления. Если у вас есть собственные элементы управления, которые отображают меньше, чем только их границы, теперь вы можете добавлять свои собственные привязки.

public class CenterSquareSnapLines : ControlDesigner
{

    public override System.Collections.IList SnapLines
    {
        get
        {
            ArrayList snapLines = base.SnapLines as ArrayList;
            CenterSquare c = this.Control as CenterSquare;
            if (c != null)
            {
                snapLines.Add(new SnapLine(SnapLineType.Left, c.BorderDistance));
                snapLines.Add(new SnapLine(SnapLineType.Right, c.Height - c.BorderDistance));
                snapLines.Add(new SnapLine(SnapLineType.Top, c.BorderDistance));
                snapLines.Add(new SnapLine(SnapLineType.Bottom, c.Width - c.BorderDistance));
                snapLines.Add(new SnapLine(SnapLineType.Top, 5));
            }
            else
            {
                //Debug message here!
            }
            return snapLines;
        }
    }

}

[Designer(typeof(CenterSquareSnapLines))]
public partial class CenterSquare : UserControl
{
 //implementation goes here
}

Ответ 5

Знаете ли вы, что можете фактически отладить конструктор?

Вы можете запустить одно решение дважды и использовать "Attach to process" для отладки среды devenv с помощью элементов управления дизайнера. Это может быть особенно полезно для отладки "странных" проблем с дизайнерами, которые в тоже время дают небольшую информацию.

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

Ответ 6

Все свойства элементов управления пользователя будут показаны разработчиком и заполнены значениями по умолчанию для типа данных. Добавление атрибута DesignerSerializationVisibility с помощью Hidden как значения не будет заполнять это свойство любыми значениями по умолчанию.

<DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)>

Это отличный способ свести код кода дизайнера к минимуму. Другой вариант - DefaultValue.

<DefaultValue(somevalue)>

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

Дизайнер будет переопределять значения полей поддержки и значения инициализатора, если вы не используете эти атрибуты.

Другой, который трудно найти: Меню - Вид - Заказ вкладки

Вы можете изменить порядок вкладок, щелкнув поля. Этот параметр отображается только во время работы конструктора.

Ответ 7

Сломанный конструктор:

Иногда визуальная студия не отображает переключатель в опции Designer/Code. Я не прибил, что вызывает это именно так, но смешение проектов vb.net и С# при использовании devexpress кажется причиной.

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

Первоначально файл проекта содержал

<Compile Include="cboTargetGroupFlights.cs">

Смена этого и повторного открытия проекта заставила визуальную студию перепроверять все формы/пользовательские элементы управления и снова отобразила конструктора.

<Compile Include="cboTargetGroupFlights.cs">
  <SubType>Component</SubType>
</Compile>

Знаете ли вы, что вы можете установить представление кода по умолчанию, дважды щелкнув что-то в представлении решения. Щелкните правой кнопкой мыши файл и выберите "Открыть с помощью..." и используйте кнопку "Установить как по умолчанию".