2011-02-26 71 views
0

先生,我有兩個窗體窗體,每個窗體都有一些控件。我想從另一個窗體訪問一個窗體的控件。我嘗試了兩種方法 - 1-使控件公開並訪問它們。 - 根據需要進行公共物業獲取和設置控制。 但在這兩種情況下,我必須創建第一種形式的對象才能訪問屬性或公共控件。我創建了一個套接字對象並將它綁定到第一個表單的構造函數中的本地端點。現在,如果我爲訪問控件創建第一個窗體的另一個對象,則會再次觸發構造函數,並執行相同的套接字綁定代碼,從而導致異常。請建議我該怎麼做? Thankssssss ....如何從一個窗體窗體訪問其他窗體的控件

+3

我不知道你在說什麼。是的,你必須首先創建/實例化控件,以便能夠使用它們 - 你期望什麼?你在問題中描述的任何一種方法都可以讓你實現你想要的。除非您向我們展示它是什麼,否則我們無法告訴您您的代碼出了什麼問題。 –

回答

2

您可以在許多方面做到這一點...

你可以聲明一些靜態的getter/setter方法來管理compononent的靜態實例:

private static Type _myObject; 
public static Type MyObject 
{ 
    get 
    { 
     return _myObject; 
    } 
} 

在這情況下,你可以從evrywere訪問它,如果你只需要一個特定的共享對象

MyClass.MyObject.Function(); 

,也可以定義一個getter全班:

public class MyClass 
{ 
    static MyClass _myClass; 
    public static MyClass Instance { get { return _myClass; } } 

    public MyClass() 
    { 
     _myClass = this; 
     ... 
    } 

    public void Hello() 
    { 
     Console.WriteLine("CIAO!") 
    } 
} 

和獲取類的所有方法和屬性:

MyClass.Instance.Hello(); 

您也可以通過類構造函數,屬性或功能,但是我不喜歡這種方式...

+0

如果我將Program.CS文件中的第一種形式的對象(它是應用程序的主要形式)聲明爲靜態並使用program.cs文件中的屬性返回實例化對象,該怎麼辦?作爲主要的窗體對象在program.cs中創建以傳遞Application.Run(new form()); – himanshu

+0

不是我認爲的最好的方式......更好的做法是編寫一個獨立的類,而不是像第二個例子那樣使用單個實例,然後訪問所有你需要的東西...... – Achilleterzo

相關問題