无论我尝试什么,我都会在“当前上下文中不存在名称'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;
}
答案 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
根据需要修改和更正代码。欢呼声