2013-06-13 38 views
1

我正在開發一個AutoCAD .Net插件,其中包含一個打開模式窗口的命令。該窗口應顯示一個網頁。AutoCAD崩潰試圖從.Net命令打開模態對話框

但它有一個奇怪的錯誤,這裏是一個簡單的代碼來重現:

[CommandMethod("TEST_BROWSER")] 
public void TestBrowserCommand() 
{ 
    var window = new Window(); 
    var browser = new WebBrowser(); 
    window.Content = browser; 

    browser.Source = new Uri("http://google.com"); 

    window.ShowDialog(); 
} 

或者更簡單:

[CommandMethod("TEST_BROWSER")] 
public void TestBrowserCommand() 
{ 
    Application.ShowModalWindow(new Uri("http://google.com")); 
} 

下面是步驟的順序之後的AutoCAD崩潰:

  1. 從命令行(TEST_BROWSER)調用該命令。
  2. 關閉出現的窗口。
  3. 調用相同的命令再次
  4. 出現錯誤消息:http://i.stack.imgur.com/sFWMX.png

它工作正常,如果打開非模態(無模式)的窗口,或者不使用Web瀏覽器或調用代碼而不使用該命令。

但我需要一個模態窗口與命令行調用瀏覽器。

還有其他人遇到同樣的問題嗎?

+0

如果問題僅在第二次調用時發生,建議您在完成後嘗試清理有關該瀏覽器窗口的所有內容。嘗試在命令結尾正確處理它。 –

+0

@Daniel我試圖調用Window.Close事件上的WebBrowser.Dispose方法,但它沒有幫助。也許有些未清理的數據確實如此,但我不知道如何正確清理所有內容。 – reinwolf

+0

您可以嘗試的另一件事是將標誌添加到'CommandMethod'屬性。有很多標誌,例如'session'(命令在autocad主窗口中運行獨立的打開文檔)。也可能有一個'模態'標誌。我無法分辨每個國旗是做什麼的,但也許其中一些可能有用。 –

回答

2

CommandMethod屬性可以有一些標誌。 使用session標誌使方法獨立於打開的文檔,並由autocad應用程序主窗口進行管理。

+0

我有同樣的問題,這也爲我解決了這個問題。 (我必須在所有交易中使用聲明添加DocumentLock,但我會樂於接受這一點,使其工作!) – Matt

+0

我只是討厭交易。我一直使用'Interop'。希望歐特克不會決定使其過時。 –

0

您可以創建WPF瀏覽器應用程序並在需要時使用給定的URL啓動。或者嘗試通過用AutoCAD

shell命令

你可以在你選擇的瀏覽器打開CMD網站這樣 的chrome.exe「zcodia.com.au」

+0

Shell命令不是我所需要的,因爲它們作爲單獨的應用程序啓動,而我需要AutoCAD中的模式窗口。無論如何,非模態窗戶可以正常工作,但模態窗口不會。 – reinwolf

0

我不能在此刻測試但我認爲你需要將你的CommandMethod聲明更改爲:[CommandMethod("TEST_METHOD", CommandFlags.Modal)]

相關問題