2015-04-08 29 views
0

在我的項目中,我使用C++/CLI和Windows Forms。我有兩個表單。一個是在main()一個Windows窗體需要訪問另一個窗體的組件。什麼是最簡單的實現?

Application::EnableVisualStyles(); 
Application::SetCompatibleTextRenderingDefault(false); 
Application::Run(gcnew FormA); 

另一個FormB執行從FORMA實例

FormB^ fb = gcnew FormB(); 
fb->Show(); 

我需要從FORMAFormB來改變部件來執行。通常他們在類FormB的private:部分。有沒有什麼好的方法可以做到與簡單地將它們全部公開一樣?在Native C++中,我會使用friend類,但在C++/CLI中不允許。

回答

2

C++/CLI具有本機C++沒有的訪問修飾符。您正在尋找internal:

受.NET強大的模塊支持支持。它比朋友更寬泛,但是你很難保證,任何人與你的私人部分混淆的地方絕不會超過你的私人部分。訪問內部成員的代碼必須編譯到相同的程序集中。所以你的FormB類必須和你的FormA類在同一個項目中。常見的情況。

如果您需要相當於的朋友跨模塊,那麼您需要[InternalsVisibleTo]屬性。以公共財產暴露成員將是另一種常見的方式。

+0

謝謝,它看起來像_internal_是比_public_更好的解決方案。 – Syb3rian

1

雖然向FormB的成員提供公共訪問可能看起來像一個快速和簡單的解決方案,但我建議您在FormB上添加一些方法來執行所述操作。

這樣,您可以從FormA調用這些方法,同時保留適當的封裝。

希望這會有所幫助。

+0

我考慮過這種可能性。但是太多的組件太多了。 – Syb3rian

相關問題