2009-05-06 27 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,在你的情况下),那么它可能是该类的成员 - 如果不是,可能它的真正的家是在数据对象?

相关问题