#c# #windows #winforms #label
#c# #Windows #winforms #метка
Вопрос:
Я создал приложение. Имя основной формы — 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)
{
}
}
Комментарии:
1. Хорошая картинка, но что вы пробовали?
Ответ №1:
Создайте два общедоступных свойства во всплывающей форме и извлеките их из родительской формы.
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;
}
}
Ответ №2:
Все зависит от того, откуда вы вызываете всплывающую форму.
Если он вызывается из самой Form1, то объект Popform сам предоставит вам значение.
Pop popFrm = new Pop();
if(popFrm.ShowDialog() == Ok)
{
string userName = popFrm.TextBox1.Text;
}
Если Pop вызывается из другой области / части приложения, возможно, вам придется сохранить его в каком-нибудь общем для обеих форм месте.
Ответ №3:
Это можно сделать с помощью событий. Этот подход особенно полезен, когда данные должны быть размещены, даже когда дочерняя форма остается открытой.
Метод заключается в том, чтобы из родительской формы подписаться на дочернюю из события. Запускает событие при закрытии дочерней формы для отправки данных
—— ПРИМЕР КОДА——
Примечание: В родительской форме добавьте кнопку: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.In форма: всплывает, добавляем событие:
public event PopSaveClickedHandler PopSaveClicked;
3. Подпишитесь на событие в родительской форме:
p.PopSaveClicked = new PopSaveClickedHandler(p_PopSaveClicked);
4.Вызываем событие в форме: всплывает кнопка Сохранить, нажимаем
if(PopSaveClicked!=null)
{
this.PopSaveClicked(txtUserName.Text);
}
Ответ №4:
Вы можете отправить данные в объект формы перед ее отображением. Создайте метод для вызова, отправьте информацию через конструктор … и т.д.
Комментарии:
1. Вы могли бы создать общедоступные свойства в объекте Form1 и задать их перед отображением Form1. Или вы могли бы добавить аргументы UserName Password в конструктор Form1. Затем в конструкторе Form1 задайте переменные-члены в Form1, используя эти данные. В любом случае вам нужно будет добавить переменные в Form1 для хранения данных и каким-то образом установить их из POP. Другой вариант — перегрузить метод, который отображает Form1, и добавить туда аргументы.