我创建了一个新表单,其中有一个工具箱。当我按下该表单中的按钮时,它应该将用户输入的信息(工具箱值)转发到主表单,其中应该在标签中说明该信息。
由于从工具箱创建该用户名的方法是私有的,我无法通过任何其他方式访问它。公开它似乎没有什么区别,也没有得到,设置(从我试图至少的方式)。
可能有助于解释它的图片:
代码(在其中创建用户):
namespace WindowsFormsApplication3
{
public partial class Newuserform : Form
{
public Newuserform()
{
InitializeComponent();
}
private void buttonCreateUser_Click(object sender, EventArgs e)
{
string uname = textboxUsername.ToString();
}
public void Unamecreate()
{
}
}
}
Form1代码(接收创建的用户):
namespace WindowsFormsApplication3
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void exitToolStripMenuItem_Click(object sender, EventArgs e)
{
Application.Exit();
}
private void aboutToolStripMenuItem1_Click(object sender, EventArgs e)
{
Aboutform form2 = new Aboutform();
form2.Show();
}
private void newLocalUserToolStripMenuItem_Click(object sender, EventArgs e)
{
Newuserform formnewuser = new Newuserform();
formnewuser.Show();
}
}
}
答案 0 :(得分:1)
你有很多选择。
一种方法是创建一个事件并在主窗体中处理它。
public partial class Newuserform : Form
{
//the public property
public event EventHandler<string> UnameChanged;
public Newuserform()
{
InitializeComponent();
}
private void buttonCreateUser_Click(object sender, EventArgs e)
{
if (UnameChanged != null)
UnameChanged(textboxUsername.ToString()); //fire the event
}
}
现在,要“处理”事件,请在主窗体中执行以下操作:
private void newLocalUserToolStripMenuItem_Click(object sender, EventArgs e)
{
Newuserform formnewuser = new Newuserform();
formnewuser.UnameChanged += Handler;
formnewuser.Show();
}
private void Handler (object sender, string Uname)
{
// do something wit the new Uname.
}
注意:重新创建Newuserform需要清理以前连接的资源。