C# 继承的winforms控件未编译

C# 继承的winforms控件未编译,c#,.net,winforms,visual-studio-2019,C#,.net,Winforms,Visual Studio 2019,我安装了VS2019的最新稳定版本和Resharper的最新版本。当我创建一个从Textbox继承的控件时,我有两个问题 1) 生成解决方案后,它不会显示在工具箱中,是的,我已检查是否启用了“自动添加到工具箱”选项 2) 新的Textbox控件(称为SpecialTextBox)未被识别为控件。当我手动尝试将SpecialTextBox添加到表单控件列表时,编译器说它无法从SpecialTextBox转换为System.Windows.forms.Control。但SpecialTextbox继

我安装了VS2019的最新稳定版本和Resharper的最新版本。当我创建一个从Textbox继承的控件时,我有两个问题

1) 生成解决方案后,它不会显示在工具箱中,是的,我已检查是否启用了“自动添加到工具箱”选项

2) 新的Textbox控件(称为SpecialTextBox)未被识别为控件。当我手动尝试将SpecialTextBox添加到表单控件列表时,编译器说它无法从SpecialTextBox转换为System.Windows.forms.Control。但SpecialTextbox继承自TextBox,后者继承自TextboxBase,后者继承自Control

代码如下:

public class SpecialTextbox : TextBox, ITextProvider
{
    public SpecialTextbox ()
    {
    }
}

我缺少什么?

如果您的
SpecialTextbox
控件不是合法的
System.Windows.Forms.TextBox
(如果您意外地使用了一个
MyApp.TextBox
或其他一些冒名顶替类,而这些冒名顶替类没有为文本框使用完全限定的名称,并且不是从
System.Windows.Forms.Control
继承的),那么它将解释您的两个错误:

  • 不是控件的类不会出现在工具箱中。(因为它不是控件)
  • 无法将其转换为System.Windows.Forms.Control(因为它不是控件)

  • 您继承的只是
    TextBox
    ,您可能有一个
    using
    指令,该指令指定了一些其他命名空间的
    TextBox
    ,它不是
    System.Windows.Forms.TextBox

    我创建了一个新的C#Windows窗体(.NET Framework)项目,添加了一个如上所述的类,(使用System.Windows.Forms;为
    TextBox
    添加了
    命名空间指令,并创建了一个虚拟
    ITextProvider
    接口)。我转到工具>选项>Windows窗体设计器>工具箱>自动填充工具箱并将其设置为true。我编译了项目,没有出现任何错误(这是必需的)最后为我的
    Form1
    打开了一个设计器,并显示了工具箱和工具箱中出现的
    SpecialTextbox
    控件。你做了什么不同?我使用的是来自ReactiveUI的现有示例项目,这是唯一的区别。我将尝试从头开始制作一个,看看是否有效。另外,你的标题说我t未编译。如果未成功生成,则不会将其添加到工具箱中。但您说过“在生成解决方案后”。那么生成是否成功?标题与我对您尝试的理解相冲突。因此,如果我尝试手动将控件添加到表单中,它将不会生成,如果我注释掉该代码,它将编译。我本来希望这样会在工具箱中显示该控件,但它没有。编译后,我注释了代码,返回错误ned.出于好奇…尝试声明为
    类SpecialTextbox:System.Windows.Forms.TextBox,ITextProvider
    (完全限定的
    文本框的类名
    -以防有一个doppleganger类隐藏在某处)同样,请小心使用大小写。我看到小写的
    b
    。但您两种方式都写过(大写和小写)在你的问题中。好的,所以添加完全限定名的提示出现了这个问题。当我创建类时,我输入了TextBox,然后点击control+enter自动添加using语句。它默认为System.Windows.Controls.TextBox,在我看来是对的。但显然它应该是System.Windows.Forms.TextBox。现在一切都好了很好,谢谢你的帮助,威克!