各位大侠,我想实现的功能是:
点击选中“出库”后,自动出现界面:并且,“出库货物详细信息”中显示选中商品的详细信息。
以上两个窗体分别为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()
然后运行时,能够出现正确信息:
但是,当手动关闭“出库信息”窗体,再次选择出库商品时,就会出现错误:
不知道是哪儿出的问题,希望有经验的大侠慷慨相助。
不用看就知道了,要么是frm1为Nothing,要么是gvInstore为Nothing,你都断点到这儿,还没有看出来?
恩,关键是不知道该怎么改,关于不同窗体之间值的传递问题还是一边找资料一边尝试解决的。新手上路,请大侠慷慨相助
@贾晓俊AA:
要么你别关frm1,要么你判断一下frm1是否为Nothing,然后看看怎么处理啊。
if frm1 is nothing then end if
@爱编程的大叔:
那如果我想出库一件商品之后,点击“确定”,该窗体关闭,可继续选择出库别的货物,该怎么操作呢?
@贾晓俊AA: 问题出在你没有贴出来的代码中,
frmOutputInfo.Instance(Me)及相关的打开frmOutputInfo的代码。
@爱编程的大叔: 打开frmOutputInfo的代码是这样的:
Private Sub RepositoryItemCheckEdit3_CheckedChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles RepositoryItemCheckEdit3.CheckedChanged
frmOutputInfo.Show()
End Sub
@贾晓俊AA: frmOutputInfo啥时候new的?
@爱编程的大叔: 如果改成:
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:
frm.Instance(me)
frm.show()
@爱编程的大叔: 真的好了,怎么这样就好了呢?是我哪个过程没想清楚吗?
@贾晓俊AA: 我晕。
一般我编程如果出BUG,就走开一会儿,家里的猫会在笔记本键盘上乱打,回来通常BUG就修复了。
你可以考虑养只猫。
@爱编程的大叔: 知道我的问题让您很无语,但还是想请教一些经验之谈,就像思考问题的思路等等,相信您的一些点播对我这样的新手会很有意义
@贾晓俊AA: 你把我回答的答案按照顺序看一遍,不能懂我也没有办法了。
@爱编程的大叔: 恩,好的,谢谢爱编程的大叔