c#label从私有方法接收信息(工具箱值)

时间:2018-02-25 18:52:22

标签: c# winforms

我创建了一个新表单,其中有一个工具箱。当我按下该表单中的按钮时,它应该将用户输入的信息(工具箱值)转发到主表单,其中应该在标签中说明该信息。

由于从工具箱创建该用户名的方法是私有的,我无法通过任何其他方式访问它。公开它似乎没有什么区别,也没有得到,设置(从我试图至少的方式)。

可能有助于解释它的图片:

image

代码(在其中创建用户):

 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();


        }
    }
}

1 个答案:

答案 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需要清理以前连接的资源。