未将对象引用设置到对象的实例 报错的解决办法!!!!?????

lzhcsdn4 2012-03-01 07:46:50
我的工程形式如下:(工程用VS2008开发)
一个WPF工程,一个WindowsForm工程
想在WPF工程中点击按钮,调用WindowsForm工程的方法

WPF工程的代码是这样的:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs) Handles Button1.Click
Dim daha As New EyeShotControl.UserControl1
daha.AddModel()
End Sub

WindowsForm工程代码是这样的:
Private Sub UserControl1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

End Sub

Public Sub AddModel()

' initialiazes the plane
xyPlane = Plane.XY
'尝试在控件中增加一个模型,代码来源于帮助文档
' creates a new Quad entity
Dim Q As New Quad(0, 0, 0, 100, 0, 0, 100, 80, 80, 0, 80, 80, Black)
' adds the entity to viewport's master entity collection
Me.ViewportProfessional1.Entities.Add(Q)

End Sub

如上所述,如果这样写代码,当运行到红色字体的代码的时候就会报错:“未将对象引用设置到对象的实例”。

但是,我如果做如下两种方式的任何一种更改都会没有报错:
方式1,AddModel()的代码直接在Load中运行,即:
Private Sub UserControl1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'' initialiazes the plane
xyPlane = Plane.XY
''尝试在控件中增加一个模型,代码来源于帮助文档
'' creates a new Quad entity
Dim Q As New Quad(0, 0, 0, 100, 0, 0, 100, 80, 80, 0, 80, 80, Black)
'' adds the entity to viewport's master entity collection
Me.ViewportProfessional1.Entities.Add(Q)

End Sub

Public Sub AddModel()

' initialiazes the plane
'xyPlane = Plane.XY
'尝试在控件中增加一个模型,代码来源于帮助文档
' creates a new Quad entity
'Dim Q As New Quad(0, 0, 0, 100, 0, 0, 100, 80, 80, 0, 80, 80, Black)
' adds the entity to viewport's master entity collection
'Me.ViewportProfessional1.Entities.Add(Q)

End Sub

方式2,在Load中直接调用AddModel(),代码即:
Private Sub UserControl1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

AddModel()

End Sub

Public Sub AddModel()

' initialiazes the plane
xyPlane = Plane.XY
'尝试在控件中增加一个模型,代码来源于帮助文档
' creates a new Quad entity
Dim Q As New Quad(0, 0, 0, 100, 0, 0, 100, 80, 80, 0, 80, 80, Black)
' adds the entity to viewport's master entity collection
Me.ViewportProfessional1.Entities.Add(Q)

End Sub

我的问题是:为什么执行代码放置在AddModel()方法中就不能运行,但是同样的代码放置在Load中或者由Load调用就可以正常运行呢?

试了多次,都是这样。往大家多多帮忙啊。谢谢。
...全文
320 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
lzhcsdn4 2012-03-04
  • 打赏
  • 举报
回复
望大家说详细一点啊。目前还没有找到问题在哪里,有经验的朋友多帮忙。谢谢。
qiqilearn 2012-03-03
  • 打赏
  • 举报
回复
public 继承错误导致的。
cguoji 2012-03-02
  • 打赏
  • 举报
回复
给控件添加一个属性试试。
lzhcsdn4 2012-03-01
  • 打赏
  • 举报
回复
等待大家的帮助。
nihao4073 2012-03-01
  • 打赏
  • 举报
回复
load方法和你的addmodel方法不一样。修饰符不一样。
lzhcsdn4 2012-03-01
  • 打赏
  • 举报
回复
补充:
Public Sub AddModel()
'尝试在控件中增加一个模型,代码来源于帮助文档
' creates a new Quad entity
Dim Q As New Quad(0, 0, 0, 100, 0, 0, 100, 80, 80, 0, 80, 80, Black)
' adds the entity to viewport's master entity collection
If Q IsNot Nothing Then
Me.ViewportProfessional1.Entities.Add(Q)
Else
MsgBox("Q 为 空")
End If
End Sub

如上,对代码进行了更改。运行之后仍旧会报错。报错的语句仍旧是红色的语句。说明经过了If语句,说明Q对象不是空的。

问题依旧,等待依旧。多多帮忙啊,谢谢大家。
lzhcsdn4 2012-03-01
  • 打赏
  • 举报
回复
谢谢。但是我跟踪的结果是无论代码放在AddModel()方法还是放置在Load()方法中都是不空的。

即便是我看错了,同样的代码为什么放在自定义的AddModel()方法中变量未空,但是放置在Load()中就不会为空,这真让我糊涂啊。
梦里独赏花 2012-03-01
  • 打赏
  • 举报
回复
问题显然 某一个对象是空的 你还是设个断点 自己跟踪调试一下

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧