Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 用自定义控件替换现有控件_C#_.net_Winforms - Fatal编程技术网

C# 用自定义控件替换现有控件

C# 用自定义控件替换现有控件,c#,.net,winforms,C#,.net,Winforms,我有一个WinForms表单,上面有几个文本框。我需要将其中一些更改为自定义版本的TextBox(我必须重写一个函数)。因为整个新控件只是这一个函数,所以我只需要几行代码就可以完成,就像我表单中包含的类一样。现在我想在代码中将设计器生成的文本框的实例更改为这个文本框的实例。这能做到吗 如果不能,并且我必须向我的项目添加一个全新的UserControl项,那么我至少可以在设计器中替换它,而不会丢失所有属性更改和事件处理程序绑定吗?说明 查看.Designer.cs文件。这是设计器创建的文件。您可以

我有一个
WinForms
表单,上面有几个文本框。我需要将其中一些更改为自定义版本的
TextBox
(我必须重写一个函数)。因为整个新控件只是这一个函数,所以我只需要几行代码就可以完成,就像我表单中包含的类一样。现在我想在代码中将设计器生成的文本框的实例更改为这个文本框的实例。这能做到吗

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

说明 查看
.Designer.cs
文件。这是设计器创建的文件。您可以通过这种方式将
文本框更改为自定义文本框

样品
转到表单类或表单的designer.cs类中的
InitializeComponent()
方法。在这个方法中,您可以找到textbox控件的用法,现在转到这些用法的定义,并将textbox变量的类型更改为自定义实现的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;