簡體   English   中英

用於Visual Studio的Visio加載項專家

[英]Visio Add-in Experts for Visual Studio

我想知道是否有人在.NET項目中有專門處理Visio的托管代碼加載項的經驗。 我搞砸了,並試圖從Shape對象中刪除超鏈接。 刪除它們可以正常工作,如果用戶保存,則一切正常。 當用戶不保存並且在關閉前Visio提示您存在未保存的更改並想知道用戶想要做什么時,就會出現問題。 如果用戶選擇“不保存”並試圖退出,則Visio應用程序將崩潰,並出現一個未處理的Win32異常,該異常已追溯至Windows事件查看器中的異常代碼:0xc0000005。 原來是“訪問沖突錯誤”。 我發現問題是一行代碼調用了形狀的超鏈接集合上的Delete方法(下面的示例)。 有人知道這是怎么回事嗎? 這是我在Google上找不到的MS錯誤嗎? 希望我在這里為您提供足夠的信息。 沒想到我需要發布一堆代碼,因為當Visio在不保存后嘗試退出時,我發現只有這一行代碼會產生異常。 我發現這會與Microsoft.Office.Interop.Visio.dll版本12和14產生確切的錯誤。

 internal static Nullable<Boolean> DeleteFirstHyperlink(Shape shape) { if(true){ //a condition to pass shape.Hyperlinks.get_ItemU(0).Delete(); return true; } else{ return false; } } 

我認為您可能正在從“形狀被刪除之前”事件處理程序中刪除超鏈接? 在這種情況下,您不應該這樣做。 取而代之的是,您可以記住在“沒有待處理的事件” /“形狀已刪除”的事件處理程序中要刪除和刪除的內容。或者可能是類似的情況。

在這里檢查: https : //msdn.microsoft.com/en-us/library/office/ff767512.aspx

在Visio觸發MustFlushScopeBeginning事件之后,在收到MustFlushScopeEnded事件之前,客戶端程序不應調用具有副作用的Visio方法。 當Visio在MustFlushScopeBeginning事件和MustFlushScopeEnded事件之間時,客戶端可以對Visio對象執行任意查詢,但是導致副作用的操作可能會失敗。

如果不是這種情況,那么可能需要一個完整的示例來說明問題(完整的源代碼說明問題)以找出問題所在。

我的意思是,通常您可以刪除超鏈接而不會出現任何問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM