2014-10-06 5 views
-1

Передача содержимого текстового поля из формы в другую.Передача значений через конструктор

Мне неоднократно говорили, как это сделать, я пытаюсь это сделать, но я терплю неудачу. Я, кажется, передаю значение отлично, но форма Mailer.cs как-то теряет то, что только что получает.

Вот код от моего ContactList.cs, который должен отправить SelectedTo.Text в Mailer.csMailTo.Text.

Это всего лишь фрагмент кода, необходимо отображать только проблемные области.

public partial class ContactList : Form 
{ 
    public Contact Contact { get; set; } 
    public Mailer mailerOwner; 

    public ContactList(Mailer mailerOwner) 
    { 
     InitializeComponent(); 
     this.Load += ContactList_Load; 
     this.mailerOwner = mailerOwner; 
     ConfigureGrid(); 
    } 

А вот метод для отправки Mailer.cs

private void OkAdd_Click(object sender, EventArgs e) 
{ 
    Mailer mailer = new Mailer(SelectedTo.Text); 
    this.Close(); 
} 

Теперь здесь инициализации вызова от Mailer.cs

public Mailer(string contactlist) 
{ 
    InitializeComponent(); 
    MailTo.Text = contactlist; 
} 

Что я делаю неправильно? : |

+0

Не могли бы вы уточнить, что * не работает? На первый взгляд ваш код выглядит нормально. – BradleyDotNET

+0

У вас есть объект Mailer в вашем классе ContactList, но вы создаете новый экземпляр в обработчике Click с текстом. Это действительно то, что вы хотите сделать? – helrich

+0

Вы не обновляете форму, которую считаете собой. В событии клика вы создаете форму _new_ и обновляете ее, а затем отбрасываете. Форма 'mailerOwner', которую вы хотите обновить? В методе 'OKAdd_Click' просто используйте' mailerOwner.MailTo.Text = SelectedTo.Text'. Это предполагает, что текстовое поле MailTo является общедоступным. –

ответ

1

В вашем событии OkAdd_Click вы создаете экземпляр нового экземпляра Mailer. Затем этот экземпляр выходит из области действия, когда событие клика завершается. Я предполагаю, что он отлично подходит для микросекунды, созданной почтовой программой.

Если вы делаете mailer членом класса, а не локальным членом (в области событий), вы, вероятно, увидите свои результаты.

+0

Вы имеете в виду переместить Mailer mailer = новый Mailer вне метода OkAdd? – Bitgod

+0

Команда «Mailer mailer = новый Mailer (SomeText)»; это две части. Определение почтовой программы «Mailer mailer»; и экземпляр «mailer = новый Mailer (SomeText)»; Вы объединили их в одно утверждение. До тех пор, пока вы * определяете * почтовую программу с более высокой областью, вы должны быть в порядке. Вы можете не стесняться * создавать экземпляр * почтовой программы в событии клика, если это имеет смысл. – DeadZone

Смежные вопросы