VB.NET版本拼写检查类使用报错:无法将TextBox转换为UIElement
VB.NET版本拼写检查类使用报错:无法将TextBox转换为UIElement
嘿,别着急,这个问题其实很常见,尤其是用老代码的时候,大概率是控件类型/项目类型不匹配导致的,我给你拆解下可能的原因和解决办法:
先搞清楚核心矛盾
MyBase.Child这个属性一般是WPF控件(比如ContentControl这类容器)里的属性,它要求赋值的是WPF的UIElement类型对象。而你报错说TextBox转不了UIElement,基本只有两种可能:
情况1:你用错了TextBox的命名空间
如果你的项目是WPF,但不小心引用了WinForms的TextBox(System.Windows.Forms.TextBox),那它和WPF的UIElement完全不是一个体系的,自然转不了。
- 解决办法:
- 检查代码里的TextBox定义,确保是WPF版本的:
Dim box As New System.Windows.Controls.TextBox() - 可以在代码顶部加
Imports System.Windows.Controls,这样直接写TextBox就会默认用WPF的版本 - 把鼠标悬停在代码里的
TextBox上,VS会显示它的命名空间,确认是System.Windows.Controls而不是System.Windows.Forms
- 检查代码里的TextBox定义,确保是WPF版本的:
情况2:你的项目是WinForms,却用了WPF的写法
如果原代码是WinForms时代的,但你现在的类继承了WPF的控件(比如ContentControl),那MyBase.Child是WPF的属性,WinForms的TextBox肯定不兼容。
- 解决办法:
把MyBase.Child = box改成WinForms里添加控件的标准写法:Me.Controls.Add(box)
额外小提示
如果你还是不确定项目类型,可以看项目的引用:
- WPF项目会有
PresentationFramework、PresentationCore这些引用 - WinForms项目会有
System.Windows.Forms引用
要是试了上面的方法还不行,可以把你的类的继承代码贴出来(比如Public Class XXX Inherits XXX),这样能更精准定位问题~
备注:内容来源于stack exchange,提问作者Mika
相关产品推荐
相关产品推荐

