0

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

重载解析失败,因为没有缩小转换就无法调用可访问的“显示”:

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

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

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

'公共共享函数显示(文本作为字符串,标题作为字符串,按钮作为 System.Windows.Forms.MessageBoxButtons,图标作为 System.Windows.Forms.MessageBoxIcon)作为 System.Windows.Forms.DialogResult':参数匹配参数'按钮'从“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()

我还查看了其他几个论坛,他们在其中讨论了此错误,但与“新建”功能特别相关,它们似乎没有帮助。

对此的任何帮助都会很棒!

4

2 回答 2

3

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

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

那是Show({String}, {String}, {MessageBoxButtons}, {MessageBoxIcon})- 你错过了一个caption论点,而不是MsgBoxStyle你应该使用MessageBoxButtons枚举。

听起来你有Option Strict On- 这很好- 但似乎你也有Imports Microsoft.VisualBasic,这实际上是用 VB6 向后兼容的东西污染你的IntelliSenseMsgBoxStyle ,这是一部分;该枚举意味着使用遗留MsgBox函数,这MessageBox是一个更符合 .NET 习惯的替代方法。

关闭Option Strict将是最糟糕的事情 - 你传递了一个错误的参数,编译器告诉你“我无法将提供的类型转换为预期的类型”;最后要做的是让它说“嘿别担心,只是隐式转换所有东西并在运行时炸毁”。

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

于 2018-05-04T17:42:58.213 回答
0

您正在将 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
于 2018-05-05T00:13:54.453 回答