Введите данные в основную форму - PullRequest
0 голосов
/ 02 июня 2011

enter image description here Я подал заявку. Основное имя формы - Form1. А другая форма называется PoP.

public partial class pops : Form
{
    public pops()
    {
        InitializeComponent();
        CenterToScreen();
    }

    private void pops_Load(object sender, EventArgs e)
    {
    }

    private void button1_Click(object sender, EventArgs e)
    {
        Close();
    }

    private void lblAdminNo_Click(object sender, EventArgs e)
    {
    }
}

Ответы [ 4 ]

2 голосов
/ 02 июня 2011

Сделайте два открытых свойства во всплывающей форме и получите их из родительской формы.

string username = string.Empty;
string password = string.Empty;

using (LoginForm form = new LoginForm ())
 {
     DialogResult result = form.ShowDialog();
     if (result == DialogResult.Ok)
     {
         username = form.Username;
         password = form.Password;
     }
 }
1 голос
/ 03 июня 2011

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

Техника - из родительской формы, подписаться на ребенка от события. Выстрелить событие при закрытии дочерней формы, чтобы отправить данные

----- ОБРАЗЕЦ КОДА -----

Примечание. В родительской форме добавьте кнопку: button1

namespace WindowsFormsApplication2
{

 public delegate void PopSaveClickedHandler(String text);

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

  private void button1_Click(object sender, EventArgs e)
  {
   Pops p = new Pops();
   p.PopSaveClicked += new PopSaveClickedHandler(p_PopSaveClicked);//Subscribe
   p.ShowDialog();
  }

  void p_PopSaveClicked(string text)
  {
   this.Text = text;//you have the value in parent form now, use it appropriately here.
  }
 }

Примечание. В всплывающей форме добавьте текстовое поле: txtUserName и кнопку: btnSave

 namespace WindowsFormsApplication2
{
 public partial class Pops : Form
 {

  public event PopSaveClickedHandler PopSaveClicked;
  public Pops()
  {

   InitializeComponent();
  }

  private void btnSave_Click(object sender, EventArgs e)
  {
  if(PopSaveClicked!=null)
  {
    this.PopSaveClicked(txtUserName.Text);
  }
  }
 }
}

Резюме:

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

 public delegate void PopSaveClickedHandler(String text);

2.В форме: Pops, Добавить событие:

 public event PopSaveClickedHandler PopSaveClicked;

3. Подписаться на мероприятие в родительской форме:

p.PopSaveClicked += new PopSaveClickedHandler(p_PopSaveClicked);

4. Вызвать событие в форме: всплывающее нажатие кнопки Сохранить

if(PopSaveClicked!=null)
{
  this.PopSaveClicked(txtUserName.Text);
}
1 голос
/ 02 июня 2011

Все зависит от того, откуда вы вызываете форму Pop.

Если она вызывается из самой Form1, то объект Popform сам предоставит вам значение.

Pop popFrm = new Pop();
if(popFrm.ShowDialog() == Ok)
{
   string userName = popFrm.TextBox1.Text;
}

Если Pop вызывается из другой области / части приложения, вам, возможно, придется хранить его где-то общее для обеих форм.

0 голосов
/ 02 июня 2011

Вы можете отправить данные в объект формы перед его отображением.Создать метод для вызова, отправить информацию через конструктор ... и т. Д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...