请专家解答:SaveFileDialog1.DialogShow(),为何对话框出不来?
代码如下:
'接收文件信息的接收回调
Private Sub FileInfoCallBack(ByVal ar As IAsyncResult)
Link = CType(ar.AsyncState, Socket)
Dim Buff As Integer = Link.EndReceive(ar) '过度到连接成功的套接字用
SaveFileDialog1.DialogShow(Me)
End Sub
用F10单步调试,代码确实执行了这一步,如果用SaveFileDialog1.DialogShow(Me),程序就会死机,如果用SaveFileDialog1.DialogShow(),程序不会死,但对话框看不到
用下列代码没有问题:
Private Sub CFrmClient_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
SaveFileDialog1.DialogShow()
End Sub
因为FileInfoCallBack是个回调函数,是不是回调函数不准显示这种对话框?
问题点数:50、回复次数:7Top
1 楼YYKXQ(异域狂想曲)回复于 2005-06-06 20:25:15 得分 0
SaveFileDialog1.DialogShow()
有这个方法吗?应该是ShowDialog()吧?Top
2 楼boytomato(深爱一人叫颖的女孩!)回复于 2005-06-06 20:53:25 得分 0
Private Sub Button2_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles Button2.Click
' Displays a SaveFileDialog so the user can save the Image
' assigned to Button2.
Dim saveFileDialog1 As New SaveFileDialog()
saveFileDialog1.Filter = "JPeg Image|*.jpg|Bitmap Image|*.bmp|Gif Image|*.gif"
saveFileDialog1.Title = "Save an Image File"
saveFileDialog1.ShowDialog()
' If the file name is not an empty string open it for saving.
If saveFileDialog1.FileName <> "" Then
' Saves the Image via a FileStream created by the OpenFile method.
Dim fs As System.IO.FileStream = Ctype _
(saveFileDialog1.OpenFile(), System.IO.FileStream)
' Saves the Image in the appropriate ImageFormat based upon the
' file type selected in the dialog box.
' NOTE that the FilterIndex property is one-based.
Select Case saveFileDialog1.FilterIndex
Case 1
Me.button2.Image.Save(fs, _
System.Drawing.Imaging.ImageFormat.Jpeg)
Case 2
Me.button2.Image.Save(fs, _
System.Drawing.Imaging.ImageFormat.Bmp)
Case 3
Me.button2.Image.Save(fs, _
System.Drawing.Imaging.ImageFormat.Gif)
End Select
fs.Close()
End If
End Sub
Top
3 楼boytomato(深爱一人叫颖的女孩!)回复于 2005-06-06 20:53:36 得分 0
saveFileDialog1.ShowDialog()
Top
4 楼qimini(循序渐进)回复于 2005-06-06 21:11:27 得分 0
呵呵,多线程~~~
自己做个事件去触发主窗体的Dialog的Show方法
以前做的程序里好像有代码,你先自己试试,不行明天贴代码给你:)Top
5 楼srxumin(与男人合作可生产最优软件,与女人合作可制造最佳宝宝)回复于 2005-06-07 06:51:49 得分 0
纠正一下,是ShowDialog()方法
楼上的高手,如何“触发主窗体的Show方法”?我这个已经是主窗体了呀Top
6 楼srxumin(与男人合作可生产最优软件,与女人合作可制造最佳宝宝)回复于 2005-06-07 06:59:24 得分 0
boytomato(深爱一人叫颖的女孩!),你那个单线程的不会有问题,就跟我的LOAD事件一样Top
7 楼qimini(循序渐进)回复于 2005-06-07 12:03:45 得分 50
用Invoke来调用主窗体的方法
public delegate void ClearextHandlder();
//预先定义委托
state.rtxtRunLog.Invoke((new ClearextHandlder(state.rtxtRunLog.Clear)));
//通过委托调用主窗体的方法,其中
//state是Form的实例
//rtxtRunLog是Form中的控件Top




