首页 新闻 赞助 找找看

vb.net不同窗体之间值传递和DEV控件的使用,综合问题

0
悬赏园豆:30 [已解决问题] 解决于 2015-02-02 17:01

各位大侠,我想实现的功能是:

点击选中“出库”后,自动出现界面:并且,“出库货物详细信息”中显示选中商品的详细信息。

以上两个窗体分别为frmInstore和frmOutputInfo,我在frmInstore的load事件中这样写: frmOutputInfo.Instance(Me),

frmOutputInfo中这样写:

Private frm1 As frmInstore

Public Function Instance(ByVal frm As frmInstore)
frm1 = frm
End Function

Private Sub frmOutputInfo_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

If frm1.gvInstore.RowCount <= 0 Then
Return
End If

Dim nRow As Integer
nRow = frm1.gvInstore.FocusedRowHandle()
If nRow < 0 Then
Return
End If

Dim dr As DataRow = frm1.gvInstore.GetDataRow(nRow)

txtSN.Text = dr("货物SN").ToString()

txtNO.Text = dr("货物编号").ToString()
txtName.Text = dr("名称").ToString()
txtType.Text = dr("型号").ToString()
txtGuige.Text = dr("规格").ToString()
txtUnit.Text = dr("单位").ToString()
txtClass.Text = dr("类别名称").ToString()

然后运行时,能够出现正确信息:

 

 

但是,当手动关闭“出库信息”窗体,再次选择出库商品时,就会出现错误:

不知道是哪儿出的问题,希望有经验的大侠慷慨相助。

贾晓俊AA的主页 贾晓俊AA | 初学一级 | 园豆:78
提问于:2015-02-02 15:19
< >
分享
最佳答案
0

不用看就知道了,要么是frm1为Nothing,要么是gvInstore为Nothing,你都断点到这儿,还没有看出来?

收获园豆:30
爱编程的大叔 | 高人七级 |园豆:30839 | 2015-02-02 15:26

恩,关键是不知道该怎么改,关于不同窗体之间值的传递问题还是一边找资料一边尝试解决的。新手上路,请大侠慷慨相助

贾晓俊AA | 园豆:78 (初学一级) | 2015-02-02 15:29

@贾晓俊AA: 

要么你别关frm1,要么你判断一下frm1是否为Nothing,然后看看怎么处理啊。

if frm1 is nothing then

end if
爱编程的大叔 | 园豆:30839 (高人七级) | 2015-02-02 15:38

@爱编程的大叔:

那如果我想出库一件商品之后,点击“确定”,该窗体关闭,可继续选择出库别的货物,该怎么操作呢?

贾晓俊AA | 园豆:78 (初学一级) | 2015-02-02 15:43

@贾晓俊AA: 问题出在你没有贴出来的代码中,

frmOutputInfo.Instance(Me)及相关的打开frmOutputInfo的代码。

爱编程的大叔 | 园豆:30839 (高人七级) | 2015-02-02 16:13

@爱编程的大叔: 打开frmOutputInfo的代码是这样的:

Private Sub RepositoryItemCheckEdit3_CheckedChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles RepositoryItemCheckEdit3.CheckedChanged
frmOutputInfo.Show()
End Sub

 

贾晓俊AA | 园豆:78 (初学一级) | 2015-02-02 16:18

@贾晓俊AA: frmOutputInfo啥时候new的?

爱编程的大叔 | 园豆:30839 (高人七级) | 2015-02-02 16:19

@爱编程的大叔: 如果改成:

Private Sub RepositoryItemCheckEdit3_CheckedChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles RepositoryItemCheckEdit3.CheckedChanged
Dim frm As frmOutputInfo = New frmOutputInfo()
frm.Show()
End Sub

就直接出错了。。。

贾晓俊AA | 园豆:78 (初学一级) | 2015-02-02 16:24

@贾晓俊AA:

frm.Instance(me)

frm.show()

爱编程的大叔 | 园豆:30839 (高人七级) | 2015-02-02 16:42

@爱编程的大叔: 真的好了,怎么这样就好了呢?是我哪个过程没想清楚吗?

贾晓俊AA | 园豆:78 (初学一级) | 2015-02-02 16:49

@贾晓俊AA: 我晕。

一般我编程如果出BUG,就走开一会儿,家里的猫会在笔记本键盘上乱打,回来通常BUG就修复了。

你可以考虑养只猫。

爱编程的大叔 | 园豆:30839 (高人七级) | 2015-02-02 16:55

@爱编程的大叔: 知道我的问题让您很无语,但还是想请教一些经验之谈,就像思考问题的思路等等,相信您的一些点播对我这样的新手会很有意义

贾晓俊AA | 园豆:78 (初学一级) | 2015-02-02 16:57

@贾晓俊AA: 你把我回答的答案按照顺序看一遍,不能懂我也没有办法了。

爱编程的大叔 | 园豆:30839 (高人七级) | 2015-02-02 16:59

@爱编程的大叔: 恩,好的,谢谢爱编程的大叔

贾晓俊AA | 园豆:78 (初学一级) | 2015-02-02 17:00
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册