如何解决'计算机'在模块'GlbSoft.SWB.SS.My.MyProject'和'GlbSoft.SWB.SS.My.MyProject'中的声明之间是模糊的。

时间:2014-10-03 18:37:50

标签: vb.net reference declaration ambiguous

我正在尝试访问运行VBA / VB.NET的计算机上的当前NUM LOCK设置: - Windows 7的 - Visual Studio 2010 - Microsoft(Office)Excel 2010

以下是代码:

Public Const _GlobalDefinitions As String = "GlobalDefinitions"
Public Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Integer, ByVal dwExtraInfo As Integer)
Public Const VK_NUMLOCK As Integer = &H90
Public Const KEYEVENTF_EXTENDEDKEY As Integer = &H1
Public Const KEYEVENTF_KEYUP As Integer = &H2
Public InitialNumLockState As Boolean

Public Sub CheckNumLockState(Optional mWriteback As SSWriteback = Nothing)
    Try
        If InitialNumLockState Then
            If Not My.Computer.Keyboard.NumLock Then
                keybd_event(VK_NUMLOCK, &H45, KEYEVENTF_EXTENDEDKEY Or 0, 0)
                keybd_event(VK_NUMLOCK, &H45, KEYEVENTF_EXTENDEDKEY Or KEYEVENTF_KEYUP, 0)
            End If
        End If
    Catch ex As Exception
        If Not mWriteback Is Nothing Then
            AddToErrorLog(mWriteback, _GlobalDefinitions & ":" & System.Reflection.MethodBase.GetCurrentMethod.Name.ToString & "> " & ex.Message & ", " & ex.StackTrace, TraceEventType.Error)
        End If
    End Try
End Sub

InitialNumLockState变量在流程的前面设置如下:

    InitialNumLockState = My.Computer.Keyboard.NumLock  

My.Computer.KeyBoard.NumLock 的初始引用工作正常(我可以在运行时的Watch窗口中查询它)并初始化InitialNumLockState变量,例如,如果NUM LOCK键,则为True是ON。

然而,在对 My.Computer.KeyBoard.NumLock 的第二次引用中,我收到以下错误:

'计算机'模块中的声明之间存在模糊关系> GlbSoft.SWB.SS.My.MyProject'和' GlbSoft.SWB.SS.My.MyProject'。

请注意,错误消息显示引用不明确,因为它存在于具有相同名称的两个模块中。当然,这是不可能的。只涉及一个项目/命名空间(GSI_SWB_SS / GlbSoft.SWB.SS)。

是否有人对此错误有任何想法或见解,以及可以通过什么来解决它?

1 个答案:

答案 0 :(得分:1)

我在申请时遇到了同样的问题。 我认为VS会在每个Computer的每个My中创建.dll的实例。 我绕过了这个问题。

在我的应用程序中,我有一个基础架构层,我已经添加了

Namespace Infrastructure.MYLOCAL
  <HideModuleName> _
  Public Module MYLOCAL
    Public MYComputer = My.Computer
  End Module
End Namespace

当我的整个应用程序使用基础架构层时,它可以工作。 我使用MYComputer代替my.Computer