www.itzhe.cn/news/20071121/21306.html
出来是否保存文件的对话框后,假如没有保存过文件,取消就取消了,假如刚刚保存过,取消了,数据就会保存在刚刚保存的文件当中,怎么解决?
CommonDialog1.Filter = "文档文件(*.txt) ¦*.txt ¦所有文件(*.*) ¦*.* "
CommonDialog1.ShowSave
if len(commondialog1.Filter=0 then exit sub
网友回复:,取消了,数据就会保存在刚刚保存的文件当中,
-----------------
很明显,编码逻辑有问题,把代码贴出来看看
网友回复:在第二次调用保存对话框时,commondialog1.Filter默认值为上一次的,
你再用len(commondialog1.Filter=0来判定是否单击取消按钮就不行了
可以这样判定是否单击取消按钮
先设置 CommonDialog.CancelError = True
然后在点击“Cancel”时,就会产生32755 (cdlCancel) 号错误。
这样就可以判别用户是否点击“Cancel”的事件。
例:
Private Sub Command1_Click()
' 设置“CancelError”为 True
CommonDialog1.CancelError = True
On Error GoTo ErrHandler
' 设置标志
CommonDialog1.Flags = cdlOFNHideReadOnly
' 设置过滤器
CommonDialog1.Filter = "All Files (*.*) ¦*.* ¦Text Files " & _
"(*.txt) ¦*.txt ¦Batch Files (*.bat) ¦*.bat "
' 指定缺省的过滤器
CommonDialog1.FilterIndex = 2
' 显示“打开”对话框
CommonDialog1.ShowSave
' 显示选定文件的名字
MsgBox CommonDialog1.filename
Exit Sub
ErrHandler:
' 用户按了“取消”按钮
Exit Sub
End Sub
网友回复:想点取消按钮触发错误需要将CancelError属性设为False,否则就是继续执行下面的MsgBox语句。
网友回复:在你的代码前加CommonDialog1.filename= " "
网友回复:该回复于2007-11-08 16:13:40被治理员删除
网友回复: "在你的代码前加CommonDialog1.filename= " " "
这样会每次都要重复输入好多数字,增加工作量
有没更好点的,简单点的判定语句,按取消就取消了,什么都不做呢,也不一定要用到
if len(commondialog1.Filter=0 then exit sub
用其他什么语句更好呢
网友回复:把CommonDialog1.FileName的值赋给一变量,如WJM,保存的时候使用这个变量如xlbook.SaveAs wjm,然后,每次显示保存对话框时将这个变量清空WJM= " ",然后使用判定wjm是否为空。假如不是,保存,否则什么都不做。
If WJM <> " " Then
保存
End If
网友回复:if len(commondialog1.Filter=0 then exit sub
Filter判定,这样不可取
网友回复:谢谢各位的帮忙,问题已经解决,
变成
CommonDialog1.Filter = "文档文件(*.txt) |*.txt |所有文件(*.*) |*.* "
CommonDialog1.ShowSave
if len(commondialog1.Filter=0 then exit sub
if wjm = commondialog1.filename then exit sub
'wjm 自定义变量
就好了,总之,感谢各位的帮忙
本篇文章来源于 www.itzhe.cn IT者网站 原文链接:file:///C:/Documents%20and%20Settings/Administrator/桌面/vb取消保存的问题%20-%20IT者.htm