专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > VB Dotnet

问个对象实例化的简单有关问题

发布时间:2011-06-23 16:01:29 文章来源:www.iduyao.cn 采编人员:星星草
问个对象实例化的简单问题
我想在某个窗体内点击button打开窗体Rackmanager
一直用的是Rackmanager.Show()这句,而且我的project里面打开窗体都是这样写的,直到某次修改后运行出错,而且只有这里出错
说对象没有实例化,我改为下面的语句,运行通过
Dim X As New Rackmanager 
X.Show()

我这里想问下出现这个问题的原因,谢谢

------解决方案--------------------
Show()如果是 Rackmanager 类的静态方法(也就是 Show() 前面有 Shared 修饰符),就可以用类名 Rackmanager 调用

VB.NET code
Rackmanager.Show()

------解决方案--------------------
出现楼主所说的情形,我估计是用不同版本的VS编译项目所致。
在2005及以上版本中,VS给项目添加了许多隐含代码。在默认参数编译时,VS给各个窗体建立了一个静态类,其中的代码是这样的:
VB.NET code
<DebuggerHidden> _
Private Shared Function Create__Instance__(Of T As { Form, New })(ByVal Instance As T) As T
    Dim Create__Instance__ As T
    If (IIf(((Instance Is Nothing) OrElse Instance.IsDisposed), 1, 0) = 0) Then
        Return Instance
    End If
    If (Not MyForms.m_FormBeingCreated Is Nothing) Then
        If MyForms.m_FormBeingCreated.ContainsKey(GetType(T)) Then
            Throw New InvalidOperationException(Utils.GetResourceString("WinForms_RecursiveFormCreate", New String(0  - 1) {}))
        End If
    Else
        MyForms.m_FormBeingCreated = New Hashtable
    End If
    MyForms.m_FormBeingCreated.Add(GetType(T), Nothing)
    Try 
        Return Activator.CreateInstance(Of T)
    Catch obj1 As Object When (?)
        Dim ex As TargetInvocationException
        Throw New InvalidOperationException(Utils.GetResourceString("WinForms_SeeInnerException", New String() { ex.InnerException.Message }), ex.InnerException)
        ProjectData.ClearProjectError
    Finally
        MyForms.m_FormBeingCreated.Remove(GetType(T))
    End Try
    Return Create__Instance__
End Function
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: