2012-02-15 22 views
1

一些背景:有一個VSTO插件用於編寫用c#,.net 4.0編寫的Excel Excel有很多選項卡,這些選項卡使用DataSets填充數據庫中的數據。當用戶將數據添加到工作表時,某些列將使用默認數據自動設置。我們使用DataSet的HasChanges方法來檢查數據是否存在修改並突出顯示它們。VSTO ColumnChanging事件未觸發,並且HasChanges在Excel工作表上無法正常工作

通常它工作得很好。但是我們在用戶站之一有一個奇怪的問題。 ColumnChanging事件不會被觸發。此外,即使添加新數據,DataSet.HasChanges方法也會返回false。

該問題僅在安裝了Excel 2007的Windows 7計算機上發生。

我們試圖通過禁用宏來重現DEV機器上的問題(Windows XP,Excel 2007),但沒有成功。我們無法在用戶機器上安裝Visual Studio。

你有什麼想法如何重現和修復它?也許這是配置問題?

+0

首先是一段修改數據集的代碼被執行?你能分享一些代碼嗎? – 2012-02-15 11:21:09

+0

@BrijeshMishra DataSet由用戶在Excel中修改。我認爲這可能與某些用戶配置有關 - 其​​他用戶沒有這個問題。 – 2012-02-15 13:53:50

回答

1

嘗試使用Application.SheetChange,它可以更可靠

UPD當你處理包裹COM對象,並訂閱它的一個事件,你需要保持原始對象的引用,以保持它活着(事件訂閱是不夠的)

+0

感謝提示我會檢查它。 – 2012-06-04 09:00:51

1

客戶建議:在客戶端

  • 可能的安全設置。

  • 是否有安裝程序?如果是這樣,請嘗試卸載然後重新安裝。

  • 而且,您可以通過SDK調試器。您可以在客戶機上使用,具體取決於您的構建設置,配置設置以及您是否部署了pdb。

  • 你修復客戶端.NET 4.0?

  • 您是否修復過客戶端上的VSTO 4運行時?此外還有VSTO 4運行時所需的更新。

碼建議:

  • 最可能的原因的事件不觸發,是對象的變化和參照事件將丟失。確保數據集永不改變。

  • 請確保事件處理程序沒有被刪除。

  • 可能存在導致數據集變量被重置和事件丟失的錯誤。然後

  • 處置可能創造另一個實例。

+0

我懷疑這個問題存在於安全設置的某處,因爲在其他站點上一切正常。問題僅出現在2臺Windows 7計算機上。我們還將檢查.NET 4.0和VSTO的安裝。 – 2012-06-06 06:44:15