用自定义控件代替现有控件

时间:2012-01-03 08:16:54

标签: c# .net winforms

我有一个WinForms表单,上面有几个文本框。我需要将其中一些更改为TextBox的自定义版本(我必须覆盖一个函数)。由于整个新控件只是这一个函数,我只需要在几行代码中完成所有操作,就像我的表单中的包含类一样。现在我想将设计器生成的文本框的实例更改为代码中的这个的实例。这可以以某种方式完成吗?

如果它不能,并且我必须在我的项目中添加一个全新的UserControl项,我是否至少可以在设计器中替换它而不会丢失所有属性更改和事件处理程序绑定?

2 个答案:

答案 0 :(得分:3)

描述

查看<YourFormName>.Designer.cs文件。这是Designer创建的文件。您可以通过这种方式将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 :(得分:1)

转到表单类或表单的designer.cs类中的InitializeComponent()方法。在此方法中,您将找到文本框控件的用法,现在转到这些用法的定义,并将文本框变量的类型更改为自定义实现的文本框类型。