2010-10-01 28 views
1

是的,有人會說「你瘋了,在asp窗體中使用winforms控件」......我認爲他們是對的。但我要說的。「我不是唯一的一個!,看看」Asp.Net中的System.Windows.Forms.WebBrowser WebForm DocumentCompleted沒有解僱

http://www.eggheadcafe.com/tutorials/aspnet/b7cce396-e2b3-42d7-9571-cdc4eb38f3c1/build-a-selfcaching-asp.aspx

所以......

做了些什麼東西像以前的鏈接。我做了以下:

using System;使用System.Threading的 ;使用System.Windows.Forms的 ;

命名空間XXXX.aspx.Print { 公共部分類德魯克:System.Web.UI.Page { 私人ManualResetEvent的MRE =新的ManualResetEvent(假);

protected void Page_Load(object sender, EventArgs e) 
    { 
     Threading(); 
    } 

    private void Threading() 
    { 
     Thread t = new Thread(new ThreadStart(GoAhead)); 
     t.SetApartmentState(ApartmentState.STA); 
     t.Start(); 
     mre.WaitOne(); 
     t.Abort(); 
    } 

    private void GoAhead() 
    { 
     DateTime time = DateTime.Now; 
     WebBrowser webBrowser = new WebBrowser(); 

     webBrowser.Navigate(Request.UrlReferrer.ToString()); 
     webBrowser.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(webBrowser_DocumentCompleted); 

     while (true) 
     { 
      Thread.Sleep(0); 
      TimeSpan elapsedTime = DateTime.Now - time; 
      if (elapsedTime.Seconds >= 13) 
      { 
       mre.Set(); 
      } 
      System.Windows.Forms.Application.DoEvents(); 
     } 
    } 

    void webBrowser_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) 
    { 
     WebBrowser webBrowser = (WebBrowser)sender; 
     if (e.Url.AbsolutePath != webBrowser.Url.AbsolutePath) return; 

     webBrowser.Print(); 
    } 
} 

}

現在...

的DocumentCompleted事件不解僱(既不ProgressChanged),我已經試了下:

  1. 添加庫MSHTML.DLL到我的項目,並將文件放入我的lib文件夾...我做到了......沒有變化。
  2. 嘗試處理WebBrowser.ReadyState的狀態...我做到了......沒有變化(實際上在收到WebBrowserReadyState.Complete後我試圖用 webBrowser.Print()打印文檔;但是我收到怪異的IE彈出告訴我:「'dialogArguments .__ IE_PrintType'是空或不是一個對象'」......好吧,做一些研究我得到了:一個關於dcomcnfg和一些com安全設置的微軟主題 我做到了......沒有變更。 ...

通過I'm在64位工作方式,Win7的... 所以之前我格式化整個電腦... 有什麼建議?

回答