以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  MessageBox.Show的异常  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=85854)

--  作者:czy66ds
--  发布时间:2016/6/3 19:22:00
--  MessageBox.Show的异常
我遇到一个奇怪现象:当代码运行到MessageBox.Show("xxx")时,系统长时间停顿,像死机似的,但按下Alt键就会跳出MessageBox.Show("xxx")对话框。这是什么情况?
--  作者:Hyphen
--  发布时间:2016/6/4 8:42:00
--  
MessageBox.Show放在什么地方,是不是在线程里,或者类似SystemIdle事件,秀出完整代码看看
--  作者:czy66ds
--  发布时间:2016/6/4 9:00:00
--  
Dim cmd As New SQLCommand
Dim dt As Date  \'日期时间变量
cmd.C
cmd.CommandText = "Select GetDate()" \'得到系统日期,含时间;来自SQL Server函数
dt = cmd.ExecuteScalar() \'返回单个值


\'循环一检验是否输入本部拆件人
Dim r As Row
For Each r In Tables("本部退货查看_Table1").Rows
    If r("验收") = True Then
        If r("本部拆件人") = ""  Then
            MessageBox.Show("缺少本部拆件人!")
            Return
        End If
    End If
Next


\'Tables("本部退货查看_Table1").AllowEdit = True
For Each r In Tables("本部退货查看_Table1").Rows
    If r("验收") = True Then
        r("本部验收日期") = dt.Date
        r("本部已验收") = True
        R.Save
       
    End If
Next


--  作者:Hyphen
--  发布时间:2016/6/4 10:15:00
--  
代码写在什么地方的
--  作者:czy66ds
--  发布时间:2016/6/4 11:31:00
--  
窗口的保存按钮
--  作者:Hyphen
--  发布时间:2016/6/4 11:34:00
--  
那应该是被窗口挡住了,如果是独立窗口或者模式窗口,试试

MessageBox.Show(e.Form.BaseForm,"缺少本部拆件人!")

--  作者:czy66ds
--  发布时间:2016/6/4 11:57:00
--  
对,你判断的很准确,是被窗口挡住了。
在项目中,message代码一处是写在模式窗口里,使用你提供的代码没有达到目的;还有的是写在主窗口中,也不好使。按下Alt键就显现message对话框。
变通的方法就是用代码模拟按下Alt键,那么,模拟按下Alt键代码如何写?

--  作者:czy66ds
--  发布时间:2016/6/4 12:14:00
--  
加上了
Sendkeys.Send("{Alt}") \'模拟按下Alt键
也不行。

--  作者:Hyphen
--  发布时间:2016/6/4 14:10:00
--  
有没有设置主窗口或者其它已打开窗口为最顶层的代码,去掉试试
--  作者:lzzhx
--  发布时间:2016/6/4 19:04:00
--  
我在其它地方看的,把MessageBox改成下面的试试

MessageBox.show("缺少本部拆件人 ! ", "重要提示",MessageBoxButtons.Ok,MessageBoxIcon.Error, 0, Windows.forms.MessageBoxOptions.ServiceNotification)