2012-01-23 2 views
2

У меня есть 2 формы, а именно: FormA и FormB.Как передавать данные из видимой формы в другую видимую форму?

Предположим, что FormA в настоящее время виден, и мне нужно передать данные в FormB.

я могу сделать это легко с помощью конструкторов,

FormB PassToThisForm = new FormB(int Data); 
PassToThisForm.ShowDialog(); 

Теперь моя проблема заключается в том, чтобы получить некоторые данные из FormB в то время как FormA является НАСТОЯЩИМ VISIBLE?

Я не могу на это:

FormA main = new FormA(); 

, так как это создаст новый экземпляр Forma ... любая идея?

Заранее спасибо^_^

+3

возможно дубликат [C начинающий # помощь, Как передать значение от ребенка обратно к исходной форме?] (HTTP: // StackOverflow .com/questions/280579/c-sharp-beginner-help-how-do-i-pass-a-value-from-a-child-back-to-the-parent-for) –

+1

Вы хотите, чтобы ' FormB' * возвращает * данные для формирования A, когда он закрывается (что предположение Митча было бы действительно) или вам нужны формы для обмена информацией, пока оба они активны? –

+0

Im в настоящее время читает ответ Митча .. Я отправлю свой комментарий, если когда-нибудь у меня возникнут какие-то проблемы. Спасибо mitch – nfinium

ответ

1

Вы можете передать ссылку на FormA, используя конструктор FormB.

Ваш класс FormB может выглядеть примерно так, то:

partial class FormB 
{ 

    private FormA reftoA; 

    public FormB(FormA formref, int Data) 
    { 
      reftoA= formref; 
    } 

    private void SomeMethodToChangeSomethinginFormA() 
    { 
       reftoA.SomeProp= 4; 
    } 
} 
0

я сделал это раньше, имея, например, FormB реализует интерфейс, который содержит свойство для значения из FormA. В конструкторе FormA объявляю параметр для этого интерфейса. Затем я объявляю в контейнере инъекции зависимостей, что FormB - это реализация, переданная FormA для этого интерфейса.

public interface ISomeInterface 
{ 
    int SomeProperty { set; } 
} 

public class FormB : Form, ISomeInterface 
{ 
    int SomeProperty { set; private get; } 

    // rest of FormB code 
} 

public class FormA 
{ 
    private readonly ISomeInterface someInterface; 
    FormA(ISomeInterface someInterface) 
    { 
     if (someInterface == null) throw new ArgumentNullException(); 
     this.someInterface = someInterface; 
    } 

    // then in FormA you can refer to someInterface.SomeProperty 
} 
Смежные вопросы