доступ к элементам управления в родительском окне из дочернего окна в c # - PullRequest
0 голосов
/ 12 ноября 2010

У меня главное «родительское» окно содержит кнопку и текстовое поле. У меня есть другое окно «дочернее» окно, которое открывается, когда я вводю какой-то текст в текстовое поле и нажимаю кнопку в главном окне. теперь дочернее окно содержит другое текстовое поле и кнопку. что мне нужно сделать, это ввести некоторый текст в текстовое поле в дочернем окне, а затем, когда я нажму кнопку в дочернем окне, текстовое поле в родительском окне должно быть обновлено текстом, который я ввел из дочернего окна .. вот образец:

Form1.cs

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace childform
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            Form2 tempDialog = new Form2(this);
            tempDialog.ShowDialog();
        }

        public void getText(string text)
        {
            textbox1.Text = text;
        }

    }
}

Form2.cs

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace childform
{
    public partial class Form2 : Form
    {
        private Form1 m_parent;

        public Form2(Form1 frm1)
        {
            InitializeComponent();
            m_parent = frm1;
        }

        private void button1_Click(object sender, EventArgs e)
        { 
            m_parent.getText(textbox1.text);
        }
    }
}

есть идеи, как это сделать?

1 Ответ

0 голосов
/ 12 ноября 2010

1) в форме 2 (ребенок один): Добавьте свойство, чтобы получить текст, который написан в TextBox:

Public string TheText
{
     get { return textbox1.Text; }
}

И установите для свойства кнопки DialogResult значение Ok, чтобы знать, что пользователь нажимает кнопку ОК, когда закрывает форму, а не кнопку закрытия.

2) В форме 1 (родитель): Проверьте, нажал ли пользователь кнопку Ok, добавьте взятие значения из свойства theText в Form2.

private void button1_Click(object sender, EventArgs e)
{
   Form2 tempDialog = new Form2();
   if (tempDialog.ShowDialog() == DialogResult.Ok)
      textbox1.Text = tempDialog.TheText;
}

Удачи!

...