2013-06-01 91 views
0

如何从其他主窗体读取数据,如使用辅助窗体中的简单文本?从其他表格读取数据

我在主窗体中使用了一个公共变量进行赋值,但是当我调用主窗体时,该变量为NULL。

+0

请告诉你如何称呼它,也使其静态 – meda

+0

TELS运输发射车=新TELS(); txtName.Text = tels.NameAndSureName(); – user1837982

+0

tels是主表单的名称 – user1837982

回答

0

有很多方法可以将值传递给另一个表单,其中一种方法是将其传递给被调用表单的constructor,然后将其传递给local/private property

比方说,你是在Form1,你叫Form2

Form2 frmCalled = new Form2("Pass this value"); 

和你Form2constructor都会有这个现在

public Form2(String val) 
    { 
     InitializeComponent(); 
     this.passval = val; 
    } 

这意味着你有一个property命名passval,如:

private string passval { get; set; } 

所以,如果你想使用它,那么现在只需调用属性即可使用它。例如,如果一个按钮被Form2点击你想现在分配一个值,那么你将有:

private void button1_Click(object sender, EventArgs e) 
    { 
     String receivedValue; 
     receivedValue = passval; 
    } 

另一种方法是从父窗体使用staticpublic属性,然后从二级或叫它被调用的形式。让我们在您的Form1或父窗体说你会声明是这样的:

public static string fromParentForm { get; set; } 

而且假设您呼叫的Form2或被叫形式,你会做这样的:

Form2 frmCalled = new Form2(); 
fromParentForm = "Parent Form Value here"; // Put value first in your static property 
frmCalled.Show(); 

Form2可能然后访问Parent Form喜欢的那个值或属性:

private void button1_Click(object sender, EventArgs e) 
    { 
     // Value from Parent form static property could be access anywhere in the form 
     MessageBox.Show(Form1.fromParentForm); 
    } 
+0

非常好的例子我使用相同的 –

+0

谢谢@ A.Goutam。上帝保佑。 – Edper

0

为了这个目的,你可以使用多种方法。其中之一(可没那么好的做法,但我不知道这个数据的其他目的

首先创造出保持SecondaryForm MainForm中的参考变量:

Private MainForm mainForm; 

然后创建的构造次要形式,这需要作为参数参考主要形式

Public SecondaryForm(MainForm mainForm) 
{ 
    this.mainForm = mainForm;  
} 

然后,当你打开一个辅助形式(我假设你的MainForm打开此),创造SecondaryForm的实例与您的新的构造:

//somewhere in MainForm 
SecondaryForm secondaryForm = new SecondaryForm(this); 
secondaryForm.Show() //or ShowDialog() 

后SecondaryForm的这里面的代码,你可以使用所有的公共属性/实例的方法OD你的MainForm