2012-08-17 77 views
0

有沒有辦法在.Net語言中創建用於MS Access 2010的自定義控件?我有一個程序使用子表單嘗試模擬一個控件,但它確實不能很好地工作。如果我能夠在C#或VB.Net中創建自定義控件或者實際上任何東西並將其導入到Access,那麼我的生活會更容易。這可能嗎?爲ms訪問創建自定義控件2010

回答

4

雖然理論上可以在.NET中創建一個可以在MS Access中使用的控件,但它也是非常不切實際的,因爲有太多的東西不起作用。

下面是一些我跑進當我試圖問題:

  • 我從來沒有得到的結合工作。換句話說,我無法以使MS Access可用的方式公開.NET的本地綁定。
  • 我無法控制調整大小。當您在Access中更改控件的大小時,只會更改放置控件的「設計曲面」的大小。它對控制的大小沒有影響。
  • .NET ActiveX控件將打包在.DLL文件中,而不是.OCX文件中。您必須使用RegAsm工具來註冊.DLL文件。
  • 您必須下載並安裝Microsoft的Interop Form's Toolkit 2.1才能創建COM互操作控件。
  • 將.Net控件屬性,方法和事件暴露給COM接口是一個相當手動和費力的過程。例如,組合框作爲「值」屬性,但它不會自動映射到ActiveX控件的.value屬性。事實上,我找不到任何方法來映射兩者,因此我必須實際創建一個不同名稱的單獨值屬性,這對使用該控件的程序員來說遠非直觀。一個典型的手動「綁定」最終會看起來像這樣:我!MyFieldName = Me.ActiveXControl.MyValue
  • 在.net中的COM可調用包裝器中編寫是否有點愚蠢,無論它是否是ActiveX控件。您必須知道如何編寫.NET代碼,以便使用VBA中的Intellisense正確顯示屬性,方法和事件。這涉及到使用委託編寫公共接口,我什至都不記得。只要說它很複雜就足夠了。

最後,我開始懷疑我是不是真的在努力做一些不可能的事情。並想知道是不是更好,只是使用.NET的一切和完全轉儲訪問。不幸的是,今天我仍然在開發Access,但我們正在認真考慮在不久的將來轉向.NET。

您可以在這裏看到另一其他相關疑問,我做出了貢獻: http://social.msdn.microsoft.com/Forums/en-US/accessdev/thread/06867384-9e1f-486d-982a-6bbb0f40848d/#5b27805f-3a95-4bbd-a50e-3de06e199490

+0

這是我不想聽到什麼,但我想我會得到這個問題的答案。試圖說服老闆說,爲這一個切換到.net是一個正確的方式,但你永遠不知道我會幸運。 – Aharpe 2012-08-17 20:28:36