Подстановка пользовательского элемента управления для существующего элемента управления - PullRequest
3 голосов
/ 03 января 2012

У меня есть форма WinForms с несколькими текстовыми полями. Мне нужно изменить некоторые из них на пользовательскую версию TextBox (мне пришлось переопределить функцию). Поскольку весь новый элемент управления - это всего лишь одна функция, я просто сделал все это в нескольких строках кода в том же виде, что и содержащийся в моем классе. Теперь я хочу изменить экземпляр сгенерированного дизайнером текстового поля на экземпляр этого в коде . Можно ли это как-то сделать?

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

Ответы [ 2 ]

3 голосов
/ 03 января 2012

Описание

Проверьте файл <YourFormName>.Designer.cs. Это файл, созданный дизайнером. Таким образом вы можете изменить свой TextBox на свой.

Пример

#region Windows Form Designer generated code
private void InitializeComponent()
{
    // change this
    this.textBox1 = new System.Windows.Forms.TextBox();
    this.SuspendLayout();
    // 
    // textBox1
    // 
    this.textBox1.Location = new System.Drawing.Point(0, 0);
    this.textBox1.Name = "textBox1";
    this.textBox1.Size = new System.Drawing.Size(100, 20);
    this.textBox1.TabIndex = 0;
    // 
    // Form1
    // 
    // ...

}

#endregion

// change this 
private System.Windows.Forms.TextBox textBox1; 
1 голос
/ 03 января 2012

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

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