Из дочерней формы в родительскую

0

Для передачи данных из дочерней формы в родительскую, мы создадим, я бы назвал так, промежуточное свойство на главной форме. Потом передаем ссылку в дочернюю форму. Там записываем значение в это промежуточное свойство. При активации родительской формы, значение из промежуточного свойства будет записано в переменную элемента управления, которое должно отображать это значение на родительской форме.

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
 
namespace _0019 {
 public partial class FormChild : Form {
  public FormChild() {
   InitializeComponent();
  }
  private void button1_Click(object sender, EventArgs e) {
   DialogResult dialog = MessageBox.Show(
    "Вы уверены?",
    "",
    MessageBoxButtons.YesNo,
    MessageBoxIcon.Question
   );
   if(dialog == DialogResult.Yes) {
    //выводим результат в дочерней форме
    label2.Text = textBox1.Text;
 
    /*создаем переменную родительской формы (Form1)и присваиваем
    ей значение через ссылку на родительскую форму*/
    Form1 F1 = (Form1)this.Owner;
 
    //присваиваем значение свойству в родительской форме
    //F1.Between = textBox1.Text;
    F1.Label2.Text = textBox1.Text;
   }
  }
 }
}
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
 
namespace _0019 {
 public partial class Form1 : Form {
  //ВНИМАНИЕ!!!
  //если мы создадим промежуточное свойство с модификатором public
  //типа string, которому будут присваиваться значения из дочерней 
  //формы, то значение на родительской форме появится только тогда,
  //когда она станет активной
  public string Between {set; get;}
 
  //а вот если создать свойство с модификатором public с типом 
  //элемента, которому будут передаваться значения из дочерней формы,
  //то значение на родительской форме появится даже тогда, 
  //когда форма будет не активна!!!
   public Label Label2 {
   set {
    label2 = value;
   }
   get {
    return label2;
   }
  }
  public Form1() {
   InitializeComponent();
  }
  private void button1_Click(object sender, EventArgs e) {
   //открываем дочернюю форму и передаем ей ссылку
   new FormChild().Show(this);
  }
  private void Form1_Activated(object sender, EventArgs e) {
   //label2.Text = Between;
   label2.Text = Label2.Text;
  }
 
  private void button2_Click(object sender, EventArgs e) {
   label2.Text = string.Empty;
  }
 }
}
0
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest
0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии
Авторизация
*
*
Регистрация
*
*
*
Пароль не введен
*
Генерация пароля
0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x
()
x