2011-03-31 18 views

Respuesta

1

Si necesita la "vista previa" de persistir después de que el archivo se ha eliminado, es probable que no tienen más remedio que copiar el archivo y navegar a la copia en su lugar.

Si usted es feliz para borrar la "vista previa" cuando el archivo es borrado, simplemente navegar fuera de ella en primer lugar:

private void close_btn_Click(object sender, EventArgs e) 
{ 
    preview_wb.Navigate("about:blank"); 
    File.Delete(@"C:\mypdf.pdf"); 
} 

Que debe hacer el truco.

+0

no funcionó, todavía está siendo utilizado por otro proceso. ¿Qué tal matar el proceso "AcroRd32.exe"? – Holyoxx

+0

Ouch. Eso es molesto. ¿Hay tal proceso en ejecución? No sé cómo funciona Acrobat dentro de un navegador. ¿Es un exe real o un control ActiveX? –

+0

sí, es un exe real. También maté todo el proceso relacionado con Acrobat. Aún no funcionó. – Holyoxx

0

¿Ha intentado encontrar el archivo a través de la caché de Internet Explorer (utilizando FindFirst/NextUrlCacheEntry API) y eliminarlo con DeleteUrlCacheEntry? Hay ejemplos pre-escritos sobre cómo recorrer y hacer la eliminación en el nuevo, simplemente googleelo.

Obtendrás 3 tipos de caché, comenzando con "Cookie:", otra comenzando con "Visited:" - que solo representa la lista de sitios visitados (no es el historial, no confundas los dos) , y el último tipo solo viene en forma de url que comienza con http: // o https: //. Una vez que esté revisando, puede seleccionar y elegir cuáles desea eliminar.

Avíseme si usted tiene alguna otra pregunta, hacerlo de esta manera debe deshacerse del problema del "archivo en uso", si no lo hace, tampoco elimine o descargue su control del webbrowser antes de hacer la eliminación del caché (pero probablemente no será necesario).

3

Por lo general, las personas sugieren que este código:

webBrowser.Navigate("about:blank"); 
while (webBrowser.ReadyState != WebBrowserReadyState.Complete) 
    Application.DoEvents(); 

File.Delete(fileName); 

no me gusta él. Prefiero manejar el evento DocumentCompleted.

void DeleteFile() 
{  
    needToDeleteFile = true; 
    webBrowser.Navigate("about:blank"); 
} 

void webBrowser_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) 
{ 
    if (needToDeleteFile) 
    { 
     File.Delete(fileName); 
     needToDeleteFile = false; 
    } 
} 
Cuestiones relacionadas