Vb.net 重载解析失败,因为没有可访问的';显示';可以在不进行缩小转换的情况下调用

Vb.net 重载解析失败,因为没有可访问的';显示';可以在不进行缩小转换的情况下调用,vb.net,narrowing,Vb.net,Narrowing,我一直有关于缩小转换错误的问题 重载解析失败,因为在没有缩小转换的情况下无法调用可访问的“Show”: “公共共享函数显示(所有者为System.Windows.Forms.IWin32Window,文本为字符串,标题为字符串,按钮为System.Windows.Forms.MessageBoxButtons)为System.Windows.Forms.DialogResult”:匹配参数“所有者”的参数从“字符串”缩小为“System.Windows.Forms.IWin32Window” “

我一直有关于缩小转换错误的问题

重载解析失败,因为在没有缩小转换的情况下无法调用可访问的“Show”:

“公共共享函数显示(所有者为System.Windows.Forms.IWin32Window,文本为字符串,标题为字符串,按钮为System.Windows.Forms.MessageBoxButtons)为System.Windows.Forms.DialogResult”:匹配参数“所有者”的参数从“字符串”缩小为“System.Windows.Forms.IWin32Window”

“公共共享函数显示(所有者为System.Windows.Forms.IWin32Window,文本为字符串,标题为字符串,按钮为System.Windows.Forms.MessageBoxButtons)为System.Windows.Forms.DialogResult”:匹配参数“caption”的参数从“Microsoft.VisualBasic.MsgBoxStyle”缩小为“String”

“公共共享函数显示(所有者为System.Windows.Forms.Iwin32窗口,文本为字符串,标题为字符串,按钮为System.Windows.Forms.MessageBoxButtons)为System.Windows.Forms.DialogResult”:匹配参数“buttons”的参数从“System.Windows.Forms.MessageBoxIcon”缩小为“System.Windows.Forms.MessageBoxButtons”

“公共共享函数显示(文本为字符串,标题为字符串,按钮为System.Windows.Forms.MessageBoxButtons,图标为System.Windows.Forms.MessageBoxIcon)为System.Windows.Forms.DialogResult”:参数匹配参数“buttons”从“Microsoft.VisualBasic.MsgBoxStyle”缩小为“System.Windows.Forms.MessageBoxButtons”

我做了一些研究,针对“重载解析失败,因为如果不进行缩小转换,就无法调用可访问的“””的通用解决方案是:“错误是根据Microsoft的要求指定Option Strict Off。我尝试在项目属性中手动更改此项,但似乎不起作用

这是发生错误的代码:

If MessageBox.Show("Please Enter a value for ESD (rad)", "ESD (rad) Value", MsgBoxStyle.OkCancel, MessageBoxIcon.Information) = DialogResult.OK Then
            txtCal_USE_Radio.Focus()
我还检查了其他几个论坛,他们讨论了这个错误,但具体涉及到“新”功能,他们似乎没有帮助

这方面的任何帮助都会很好

您调用了
Show({string},{MsgBoxStyle},{MessageBoxIcon})
,因此错误消息中的最后一个重载是最近的:

“公共共享函数显示(文本为字符串,标题为字符串,按钮为System.Windows.Forms.MessageBoxButtons,图标为System.Windows.Forms.MessageBoxIcon)为System.Windows.Forms.DialogResult”:参数匹配参数“buttons”从“Microsoft.VisualBasic.MsgBoxStyle”缩小为“System.Windows.Forms.MessageBoxButtons”

这就是
Show({String},{String},{MessageBoxButtons},{MessageBoxIcon})
-您缺少
标题
参数,应该使用
MessageBoxButtons
枚举而不是
MsgBoxStyle

听起来你的
选项对
很严格-这很好-但你似乎也有
导入Microsoft.VisualBasic
,这实际上是用VB6后台兼容性材料污染你的IntelliSense,而
MsgBoxStyle
就是其中的一部分;该enum意味着使用遗留的
MsgBox
函数,它是一个更为.NET惯用的函数替代

关闭
选项Strict
将是最糟糕的一件事-您正在传递一个错误的参数,而编译器告诉您“我无法将提供的类型转换为期望的类型”;最后一件事是让它说“嘿,别担心,只是隐式地转换所有的东西,然后在运行时爆炸”

IntelliSense/autocomplete应该告诉您在函数调用中键入参数时要做什么;重新键入左括号
,并观察IntelliSense在使用箭头键在提供的参数之间移动插入符号时突出显示参数及其各自的类型。

您调用了
Show({string},{MsgBoxStyle},{MessageBoxIcon})
,因此错误消息中的最后一个重载最接近:

“公共共享函数显示(文本为字符串,标题为字符串,按钮为System.Windows.Forms.MessageBoxButtons,图标为System.Windows.Forms.MessageBoxIcon)为System.Windows.Forms.DialogResult”:参数匹配参数“buttons”从“Microsoft.VisualBasic.MsgBoxStyle”缩小为“System.Windows.Forms.MessageBoxButtons”

这就是
Show({String},{String},{MessageBoxButtons},{MessageBoxIcon})
-您缺少
标题
参数,应该使用
MessageBoxButtons
枚举而不是
MsgBoxStyle

听起来你的
选项对
很严格-这很好-但你似乎也有
导入Microsoft.VisualBasic
,这实际上是在用VB6后台兼容性材料污染你的IntelliSense,它是
MsgBoxStyle
的一部分;enum意味着使用遗留的
MsgBox
函数,which
MessageBox
是一个更为.NET惯用的替代

关闭
选项Strict
将是最糟糕的一件事——您传递了一个错误的参数,编译器告诉您“我无法将提供的类型转换为预期的类型”;最后要做的是让它说“嘿,别担心,只需隐式转换所有内容,然后在运行时放大”


IntelliSense/autocomplete应该告诉您在函数调用中键入参数时要做什么;重新键入左括号
和watch IntelliSense在您使用箭头键在所提供的参数之间移动插入符号时突出显示参数及其各自的类型。

您将MessageBox与MsgBox混合更改MsgBoxStyle.ok取消为MessageBox语法

If MessageBox.Show("Please Enter a value for ESD (rad)", "ESD (rad) Value", MessageBoxButtons.OKCancel, MessageBoxIcon.Information) = DialogResult.OK Then

您正在将MessageBox与MsgBox混合,将MsgBoxStyle.OkCancel更改为MessageBox语法

If MessageBox.Show("Please Enter a value for ESD (rad)", "ESD (rad) Value", MessageBoxButtons.OKCancel, MessageBoxIcon.Information) = DialogResult.OK Then

这个错误告诉你哪里出了问题