C# 继承的winforms控件未编译
我安装了VS2019的最新稳定版本和Resharper的最新版本。当我创建一个从Textbox继承的控件时,我有两个问题 1) 生成解决方案后,它不会显示在工具箱中,是的,我已检查是否启用了“自动添加到工具箱”选项 2) 新的Textbox控件(称为SpecialTextBox)未被识别为控件。当我手动尝试将SpecialTextBox添加到表单控件列表时,编译器说它无法从SpecialTextBox转换为System.Windows.forms.Control。但SpecialTextbox继承自TextBox,后者继承自TextboxBase,后者继承自Control 代码如下: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继
public class SpecialTextbox : TextBox, ITextProvider
{
public SpecialTextbox ()
{
}
}
我缺少什么?如果您的
SpecialTextbox
控件不是合法的System.Windows.Forms.TextBox
(如果您意外地使用了一个MyApp.TextBox
或其他一些冒名顶替类,而这些冒名顶替类没有为文本框使用完全限定的名称,并且不是从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。现在一切都好了很好,谢谢你的帮助,威克!