2014-02-11 2 views
1

У меня есть 2 формы, а именно Form1 & Form2.Доступ к другим формам

В Form1 У меня есть строка с именем «HumanName», это «HumanName» имеет значение, которое находится из textbox.text. Также у меня есть кнопка с именем Button1.

В Form2 У меня есть ярлык с именем Label1.

Это то, что я хочу достичь. Когда я попал/пресс Button1, Label1.Text=HumanName

Form1:

HumanName = textbox.text, Button1 

Form2:

Label1.Text = HumanName 

вот мой код:

public partial class Form1 : Form 
{ 
    private void PersonalInformationToForm2() 
    { 
     HumanName = textBox_Name.Text; 
    } 

    private void Button1_Click(object sender, EventArgs e) 
    {   
     PersonalInformationToForm2(); 
    } 
} 

public partial class Form2 : Form 
{ 
    public Form2() 
    { 
     InitializeComponent(); 

     Label1.Text=HumanName; //I need the value of HumanName from Form1   
    } 
} 
+0

Посмотрите на [Application. OpenForms] (http://msdn.microsoft.com/en-us/library/system.windows.forms.application.openforms%28v=vs.110%29.aspx). Вы можете найти форму, которую вы открыли, и, при необходимости, получить доступ к ее свойствам/методам. – James

+0

Возможно, избыточный уровень для вашего сценария, но в целом вы можете привязать элементы управления к тому же источнику, который содержит свойство HumanName (с событием HumanNameChanged). Затем все связанные элементы управления будут обновлять их отображение при изменении свойства (даже если есть больше экземпляров form1 и form2) –

+0

Я думаю [это] [1], что вы ищете. ;) [1]: http://stackoverflow.com/questions/6382750/adding-an-event-handler-for-a-control-in-child-form-from-parent-form- in-c-sharp – Gabor

ответ

1

На Form1 инкапсулировать контроль в собственности

public string GetTextboxText {get{ return Textbox1.Text;}} 

С другой форме

var formOne = (Form1)Application.OpenForms["Form1"]; 
Label1.Text = formOne.GetTextboxText; 
0

Создать конструктор Form2, который принимает имя HumanName.

Затем при нажатии кнопки в Form1, создать новый экземпляр формы и передать в TextBox1.Text

0

в Form2 создать конструктор следующим образом

public void Form2(string name) 
{ 
    Label1.Text=name; 
} 

Ное из Form1 мы можем послать значение следующим образом

string HumanName=textbox.text; 
Form2 frm2=new Form2(HumanName); 
frm2.Show(); 
+0

Это не конструктор, вы должны перегрузить конструктор следующим образом: 'public Form2 (имя строки) {Label1.Text = name;}' – Max

0

Создать экземпляр для Form1, которая доступна для Form2 вы можете сделать это следующим образом:

public static Form2 Instance; 

public Form2() 
{ 
    InitializeComponent(); 
    Instance = this; 
} 

Установите для параметра «Метка1» значение true в свойствах.

При ударе, что button1 на Form1 сделать это:

private void Button1_OnClick(object sender, EventArgs args) 
{ 
    Form2.Instance.Label1.Text = textBox1.Text; 
} 
Смежные вопросы