Почему частичные классы, когда я создаю новый пользовательский элемент управления в winforms? - PullRequest
4 голосов
/ 06 октября 2009

Есть несколько способов начать создание нового пользовательского элемента управления в VS? Какой из них я должен использовать? Как в:

Right click project -> Add ->
1. User Control, or
2. Component, or
3. Custom Control, or?

Я использую # 1 и получаю частичный класс, подобный:

namespace MyControls
{
    partial class NewControl
    {
        /// <summary>
        /// Required designer variable.
        /// </summary>
        private System.ComponentModel.IContainer components = null;

        /// <summary>
        /// Clean up any resources being used.
        /// </summary>
        /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
        protected override void Dispose ( bool disposing )
        {
            if ( disposing && ( components != null ) )
            {
                components.Dispose ( );
            }
            base.Dispose ( disposing );
        }

        #region Component Designer generated code

        /// <summary>
        /// Required method for Designer support - do not modify 
        /// the contents of this method with the code editor.
        /// </summary>
        private void InitializeComponent ( )
        {
            components = new System.ComponentModel.Container ( );
            //this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
        }

        #endregion
    }

Зачем мне нужен этот класс? Это полезно только для составных элементов управления, где вам нужно использовать конструктор?

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

Ответы [ 5 ]

4 голосов
/ 06 октября 2009

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

Если вы вообще не используете конструктор компонентов, вполне нормально удалить этот файл (и файл ResX, если есть) и удалить ключевое слово partial из объявления класса.

Обратите внимание, что удаление этого файла навсегда уничтожит все, что вы сделали в конструкторе.

4 голосов
/ 06 октября 2009

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

2 голосов
/ 06 октября 2009

В дополнение к тому, что сказал Майкл Барр, это помогает скрыть реализацию дизайнера от вашего взгляда, поэтому вы с меньшей вероятностью внесете изменение, которое сделает дизайнер не в состоянии проанализировать ваш файл.

ИМХО, они также помогают поддерживать чистоту ваших файлов кода, скрывая беспорядок, который просто используется для реализации GUI элемента управления. Вы можете сосредоточиться на других деталях, которые заставляют элемент управления работать так, как вы хотите.

0 голосов
/ 06 октября 2009

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

0 голосов
/ 06 октября 2009

Да, это когда вы хотите использовать дизайнер для создания вашего элемента управления. Так же, как с winforms, где вы хотите, чтобы ваш пользовательский код не терялся при повторном создании конструктором файла .designer.cs.

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