AC2Designs 发表于 2022-7-6 11:43:17

frmCommonDialog-取消

如果文件被选中并位于文件名文本框中,则无论您选择“确定”还是“取消”,名称仍然基于我的代码。
 
单击“确定”或“取消”并不重要,重要的是文件名框中是否有任何内容。
 
有办法吗?
或者我需要以某种方式读取click事件来测试是否单击了“OK”或“Cancel”?
我该怎么做?
 
谢谢你的帮助,
 
凯文

MSasu 发表于 2022-7-6 12:02:16

发布代码摘录以进行调试将非常有用。
 
但是,以下代码在我的工作站上正常工作:
 
CommonDialog1.FileName = "C:\MyTestFile.txt"
CommonDialog1.Filter = "Text Files (*.TXT) |*.txt" & "|All Files (*.*)|*.*"
CommonDialog1.FilterIndex = 1
CommonDialog1.DialogTitle = "Select a file "

CommonDialog1.ShowOpen

MsgBox CommonDialog1.FileName
 
当做

AC2Designs 发表于 2022-7-6 12:08:28

AC2设计,我爱你!!!

goran 发表于 2022-7-6 12:17:55

试试这个:

Sub OpenFile()
   On Error GoTo errHan
   ' Your code
   '
   '
   '
   Exit
errHan:
   If Err.Number = 32755 Then    'Cancel
       Unload Me
   ElseIf Err.Number = 75 Then
       MsgBox "File " & fName & " is open"
       Unload Me
   End If
End Sub

AC2Designs 发表于 2022-7-6 12:29:25

我想我对我最初的帖子不是很清楚。
我的代码运行良好,没有任何错误。
问题是当提示输入文件名时,无法取消。
 
前任。
当我在commomdialog中单击“取消”时,如果文件名文本框中有文件名,文件名仍会传递给
commondialog1。文件名
 
我想我需要的是一种方法来确定我点击哪个按钮,“确定”或“取消”
 
这可能吗?
 
凯文

MSasu 发表于 2022-7-6 12:39:57

根据您的帖子和签名,我假设您正在使用VBA(AutoCAD 2008不支持VSTA)。因此,我提出的示例基于VBA,在我的第一篇文章中可能不够清楚。
 
那么,你用什么组件来打开盒子呢?应为“Microsoft Common Dialog Control 6.0”。
 
在新表单上添加两个按钮和一个CommonDialog控件,并粘贴下面的代码。
 
Private Sub CommandButton1_Click()
   Dim SelectedFile As String
   CommonDialog1.FileName = "C:\MyTestFile.txt"
   CommonDialog1.ShowOpen
   SelectedFile = CommonDialog1.FileName
    MsgBox SelectedFile
End Sub

Private Sub CommandButton2_Click()
   Dim SelectedFile As String
   CommonDialog1.FileName = "C:\MyTestFile.txt"
   SelectedFile = CommonDialog1.FileName
   CommonDialog1.ShowOpen
   MsgBox SelectedFile
End Sub
 
正如您所见,这取决于您在代码中的什么位置获得文件名;第一种方法是正确的(我不是说它是唯一的方法),应该可以解决您的问题。
 
当做

MSasu 发表于 2022-7-6 12:45:57

 
关于@goran的建议,即使您没有代码错误(错误),也可以方便地使用错误处理程序——有时可能会故意导致错误,只是为了测试它并相应地采取行动;这是一种非常常见的编程实践(即尝试/除了编码)。
只有一条注释,在CommonDialog的对话框中,默认情况下取消使用不会引发错误,因此需要使用以下命令显式强制执行:
 
CommonDialog1.CancelError = True
 
当做
页: [1]
查看完整版本: frmCommonDialog-取消