我做了一个申请。主窗体名称是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)
{
}
}
答案 0 :(得分:2)
在弹出窗体上创建两个公共属性,并从父窗体中检索它们。
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 :(得分:1)
这完全取决于你从哪里调用Pop形式。
如果从Form1本身调用它,那么Popform的对象本身就会为你提供值。
Pop popFrm = new Pop();
if(popFrm.ShowDialog() == Ok)
{
string userName = popFrm.TextBox1.Text;
}
如果从应用程序的不同区域/部分调用Pop,则可能必须将其存储在两个表单共有的位置。
答案 2 :(得分:1)
这可以通过活动来完成。即使子表单保持打开,这种方法在发布数据时特别有用。
技术是 - 从父表单,订阅来自事件的孩子。在子表单关闭时触发事件,以发送数据
-----示例代码-----
注意:在父窗体中添加一个按钮: 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.
}
}
注意:在Pops Form中添加TextBox: txtUserName 和一个Button: 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.在表格中:弹出,添加一个事件:
public event PopSaveClickedHandler PopSaveClicked;
3.订阅父母表格中的活动:
p.PopSaveClicked += new PopSaveClickedHandler(p_PopSaveClicked);
4.在表单中调出事件:弹出保存按钮单击
if(PopSaveClicked!=null)
{
this.PopSaveClicked(txtUserName.Text);
}
答案 3 :(得分:0)
您可以在显示之前将数据发送到表单对象。创建一个方法来调用,通过构造函数发送信息......等等。