C# 如何使引用窗体上的控件可访问?

C# 如何使引用窗体上的控件可访问?,c#,winforms,login,password-protection,login-control,C#,Winforms,Login,Password Protection,Login Control,我有以下代码从我的主窗体调用登录窗体: private void frmMain_Activated(object sender, EventArgs e) { frmLogin loginForm = new frmLogin(); if (loginForm.ShowDialog() == DialogResult.OK) { HHSConsts.userName = loginForm.textBoxUserName.Text; }

我有以下代码从我的主窗体调用登录窗体:

private void frmMain_Activated(object sender, EventArgs e)
{
    frmLogin loginForm = new frmLogin();

    if (loginForm.ShowDialog() == DialogResult.OK)
    {
        HHSConsts.userName = loginForm.textBoxUserName.Text;
    }
    else
    {
        HHSConsts.userName = "dbill";
        HHSConsts.pwd = "ppus"; 
        HHSConsts.currentSiteNum = "42";
    }
    loginForm.Dispose();
}
也许不用说,我在登录表单上有一个名为textBoxUsername的文本框

错误消息是,“HHS.frmLogin.textBoxUsername”由于其保护级别而不可访问

如何使textBoxUsername公开,以便从主窗体访问它

使现代化 我想在登录表单本身中分配值,并将主表单的代码更改为:

private void frmMain_Activated(object sender, EventArgs e)
{
    frmLogin loginForm = new frmLogin();
    if (loginForm.ShowDialog() != DialogResult.OK)
    {
        HHSConsts.userName = "duckbilled";
        HHSConsts.pwd = "platypus";
        HHSConsts.currentSiteNum = "1967IceBowl";
    }
    loginForm.Dispose();
}
更新2 因此,我可以用任何一种方法来做这件事——就像上面的更新一样,也可以用约翰·科纳的方法:

// login form:
public string UserName { get { return textBoxUsername.Text; } }
public string Password { get { return textBoxPwd.Text; } }
public string SiteNumber { get { return listBoxSitesWithFetchedData.SelectedItem.ToString(); } }

// main form:
private void frmMain_Activated(object sender, EventArgs e)
{
    frmLogin loginForm = new frmLogin();
    if (loginForm.ShowDialog() != DialogResult.OK)
    {
        HHSConsts.userName = "empacadores";
        HHSConsts.pwd = "vaqueros";
        HHSConsts.currentSiteNum = "2015IceBowlII";
    }
    else
    {
        HHSConsts.userName = loginForm.UserName;
        HHSConsts.pwd = loginForm.Password;
        HHSConsts.currentSiteNum = loginForm.SiteNumber;
    }
    loginForm.Dispose();
}

但是,不知道哪种方法是首选方法。

不要将控件公开。而是将属性作为登录表单的一部分公开:

public string UserName {get {return textBoxUserName.Text;}}

还有几十个复制品。尝试使用错误消息作为搜索词。