以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  如何关闭一个文件  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=63051)

--  作者:zhsenchzhi
--  发布时间:2015/1/13 1:28:00
--  如何关闭一个文件
用webbrowser 打开一个文件后, 用 filesys删除或者移动该文件,报一个文件正在使用中的错误,  想把这个文件关掉,仅仅改变  webbrowser  所显示的文件是不行的, fileinfo也没有类似的方法,请问该怎样关闭一个打开的文件呢?
--  作者:Bin
--  发布时间:2015/1/13 7:56:00
--  
Address ="XXX"  改为显示另外一个文件 或者空.
--  作者:zhsenchzhi
--  发布时间:2015/1/13 15:53:00
--  
我把 address 设成了 about:blank,还是不行呀
仍然在报正在使用

--  作者:Bin
--  发布时间:2015/1/13 15:55:00
--  
Address ="" \'空

或者Address ="C;\\1.txt" \'换成另外一个文件看看

--  作者:zhsenchzhi
--  发布时间:2015/1/13 16:22:00
--  
还是不行呀,, 分别把 web.Address  设成 about:blank, “”, nothing  和别的文档,甚至家了以下代码,还是不行,总是 报 文件正在使用,操作失败


完整代码如下
    try
        oDocument.Saved = True
        
        oDocument.save
        oDocument.close
    Catch ex As Exception
        \'MessageBox.Show("追加数据失败")
    End Try
    
    
    Dim web As WinForm.WebBrowser = Forms("文档管理主窗口").Controls("WebBrowser1")
    \'web.Address = "about:blank"
    web.Address = "d:\\readme.txt"
    FileSys.DeleteFile(fileFullDir)


请问你们之前做过实验吗?

--  作者:Bin
--  发布时间:2015/1/13 16:24:00
--  
不要把代码放在一起.你清楚了之后 把FileSys.DeleteFile(fileFullDir) 删除代码放到按钮独立执行看看.
--  作者:有点甜
--  发布时间:2015/1/13 16:24:00
--  

 不,绝不可能有问题,肯定是你处理得有问题。

 

 具体请做例子上来。


--  作者:zhsenchzhi
--  发布时间:2015/1/14 1:08:00
--  
具体代码如下所示, 代码为 一个 表的 currentchanged 事件

思路为: 某表被选择的当前行改变之后,  根据表中某列的值,找到某加密文件,解压后 在 webbrowser中显示出来,同时记下 该文档名字和位置,改变所显示的文件后,同时把上一显示文件删除

目前存在的问题: 1  打开过的文件不能被删除, 2  excel文档上面的菜单,只有第一次能显示出来, 切换文档后,excel菜单消失,只能重新打开foxtable 后才能再次显示,同样的,只能显示一次

不知道从下面的代码中能不能找到问题



If e.Table.Current Is Nothing Then \'如果Current为Nothing
    Return \'则返回
End If



Dim fileDesc As String =  e.Table.Current("描述")
Dim fileFullDir As String =  e.Table.Current("文件完整路径")
\'MessageBox.show(fileFullDir)
Dim web As WinForm.WebBrowser = e.Form.Controls("WebBrowser1")
web.OfficeToolBar = True
If fileDesc = "文件" Then
    \'MessageBox.show( System.Web.HttpUtility.UrlDecode(web.Address) & "            " & fileFullDir)
    Dim jiemiHouAddress As String =  System.Web.HttpUtility.UrlDecode(web.Address)
    jiemiHouAddress = jiemiHouAddress.Replace("/","\\")
    
    Dim tempFileName As String = Functions.Execute("getTmepFileNameByEtFileName",fileFullDir)
    
    
    If jiemiHouAddress.EndsWith(tempFileName) =False Then
        
        
        Dim lowerJiemiHouAddress As String = jiemiHouAddress.ToLower()
        If  (lowerJiemiHouAddress.EndsWith(".xls") OrElse lowerJiemiHouAddress.EndsWith("xlsx") OrElse lowerJiemiHouAddress.EndsWith("csv") OrElse lowerJiemiHouAddress.EndsWith("doc") OrElse lowerJiemiHouAddress.EndsWith("docx")) _
            AndAlso oDocument IsNot Nothing Then
            
            try
                \'oDocument.cancel
                oDocument.save
                oDocument.Saved = True
                
            Catch ex As Exception
                \'MessageBox.Show("追加数据失败")
            End Try
            
            try
                oDocument.close
            Catch ex As Exception
                \'MessageBox.Show("追加数据失败")
            End Try
            
            
            
        End If
        
        try
            oDocument.delete
        Catch ex As Exception
            \'MessageBox.Show("追加数据失败")
        End Try
        
        
        Functions.Execute("jiemiFile",fileFullDir, tempFileName )
        Dim ifo As New FileInfo(tempFileName)
        \'ifo.ReadOnly = True
        ifo.Hidden = True
        
        try
            Dim webBasecontrol As Object = web.basecontrol
            webBasecontrol.Navigate(tempFileName)
            \'web.address=tempFileName
        Catch ex As Exception
            \'MessageBox.Show("追加数据失败")
        End Try
        
        
        
        If FileSys.FileExists(lastWebBrowserAddress) Then
            FileSys.DeleteFile(lastWebBrowserAddress)
            try
                \' FileSys.DeleteFile(lastWebBrowserAddress)
                
            Catch ex As Exception
                \'MessageBox.Show("追加数据失败")
            End Try
        End If
        lastWebBrowserAddress = tempFileName
        
    End If
Else
    lastWebBrowserAddress = Nothing
    \'web.Address = Nothing
    web.Address = "about:blank"
End If


--  作者:Bin
--  发布时间:2015/1/14 8:05:00
--  
例子发上来, 或者试试把删除放到独立的按钮试试看是不是切换地址来没来得及释放你就删除导致被占用.


--  作者:zhsenchzhi
--  发布时间:2015/1/14 8:55:00
--  
独立的按钮也没用,我设了右键菜单来删除,依然不行, 
下面是你要的例子,运行时,请在 Attachments 下面添加一个文件夹,文件夹里面要有几个文件,第一次运行时,会把这些文件自动加密

运行时, 会把要打开的文件 自动解密到一个temp 文件夹下面, 然后切换文件后不能删除,不仅仅在项目中不能删除,直接 从文件夹下面删除,都不行,操作系统都会提示文件正在使用中


 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:项目文档-加密.foxdb