2009-05-06 55 views

回答

0

假設formB在formA中初始化,我建議向formB的構造函數中添加一個字符串來發送Texbox1。文字

class formB: Form{ 
    private string data; 
    public formB(string data) 
    { 
     InitializeComponent(); 
     this.data = data; 
    } 
    //rest of your code for the class 

} 
2

您可以在一個窗體上公開一個屬性並從另一個窗體調用它。當然,你需要一些獲取form1實例的方法。您可以將其保留爲程序類或其他父類中的靜態屬性。通常在這種情況下,我有一個靜態應用程序類來保存實例。

public static class Application 
{ 
public static MyForm MyFormInstance { get; set; } 
} 

然後,當您啓動第一個窗體時,將應用程序MyFormInstance屬性設置爲第一個窗體的實例。

MyForm instance = new MyForm(); 
Application.MyFormInstance = instance; 

將屬性添加到第二個表單。

public String MyText 
{ get { return textbox1.Text; } 
    set { textbox1.Text = value; } 
} 

然後你就可以從你的第二個形式訪問:

Application.MyFormInstance.MyText 
+1

好了,一個更簡單的方法是,以紀念文本作爲公共的屬性修改器,那麼你可以直接訪問它,但你仍然需要一種方式來獲得該實例。 – 2009-05-06 17:53:12

1

在有需要的,暴露無論是屬性或返回文本的方法的數據文本框的形式。 IE:

internal string TextBoxTest 
{ 
    get{ return this.textBox1.Text;} 
} 
+0

那麼我如何從窗體中調用該方法,我想執行我的原始方法? – Goober 2009-05-06 17:52:53

0

不要這樣做。

更長的版本:爲什麼您的視圖直接與另一個視圖進行交互?

更長的版本:

而不是使暴露領域的公共財產,它會提供更好的封裝和隔離從變化是否與所關注的領域的形式與某種形式的數據對象,這是互動然後傳遞給感興趣的方法。

感興趣的方法的位置應該仔細考慮 - 如果它控制視圖的各個方面(WinForm,在你的情況下),那麼它可能是該類的成員 - 如果不是,可能它的真正的家是在數據對象?

相關問題