以另一种形式使用字符串变量C#

时间:2016-10-29 23:36:17

标签: c#

无论我尝试什么,我都会在“当前上下文中不存在名称'userName'。”我正在尝试传递用户名并从登录表单登录到主表单上的字段。我已将这些字段修饰符设置为Public。我已经尝试创建LoginForm类的实例,但我得到了相同的行为。

LoginForm.cs

public void btnLogin_Click(object sender, EventArgs e)
    {
        string userName = User.Text;
        string password = Password.Text;

        this.Visible = false;
    }

MainForm.cs

public void Browser_DocumentCompleted_1(object sender, WebBrowserDocumentCompletedEventArgs e)
    {
        Browser.Document.GetElementById("Email").InnerText = userName;
        Browser.Document.GetElementById("Password").InnerText = password;
    }

2 个答案:

答案 0 :(得分:0)

在创建LoginForm窗口时,您是否尝试过类似的操作? 确保您的TextBoxes设置为公共..

var loginform = new LoginForm();
loginform.textbox1.TextChangedEvent += new textbox1_TextChangedEvent();
loginform.textbox2.TextChangedEvent += new textbox2_TextChangedEvent();
loginform.Show(); //Can also use loginform.ShowDialog();


void textbox1_TextChangedEvent(object sender, Eventarg e)
{
  textbox1_Username.Text == ((TextBox)sender).Text;
}

void textbox2_TextChangedEvent(object sender, Eventarg e)
{
  textbox2_Password.Text == ((TextBox)sender).Text;
}

这可能会让您知道如何操作,只需在主窗体上运行事件,而不是直接在登录窗体上创建它们。

答案 1 :(得分:0)

您可以尝试做的一件事是在控件本身之外声明变量。然后参考主控制。如果我没记错的话就像这样 (伪代码,因为我没有证明检查它)

首先将变量放在外面,就像这样

public string userName;
public string password;
public void btnLogin_Click(object sender, EventArgs e)
{
    userName = User.Text;
    password = Password.Text;

    this.Visible = false;
}

然后

Browser.Document.GetElementById("Email").InnerText = LoginForm.UserName

根据需要修改和更正代码。欢呼声