【发布时间】:2015-10-13 19:52:15
【问题描述】:
我有一个用户控件在我的主窗体上调用一个方法,这个方法应该在同一个窗体上启用一个按钮(默认情况下这个按钮是禁用的),但是它不起作用。
private void button1_Click(object sender, EventArgs e)
{
Form1 fr = new Form1();
fr.login(textBox1.Text, textBox2.Text);
}
这是我的方法
public void login(string username, string password)
{
Connect();
sendMessage("LoginAction,Username=" + username + "UserPassword=" + password);
}
这里是启用按钮的地方
private void commandInterpreter(string Message)
{
if(Message.Contains("LoginSuccess,") == true)
{
name = Message.Remove(Message.IndexOf("LoginSuccess,Name="), 18);
Bt2En = true;
}
}
这里是我公开按钮属性的地方:
public bool Bt2En
{
get { return button2.Enabled; }
set { button2.Enabled = value; }
}
【问题讨论】:
-
您似乎正在创建 Form1 的新实例并启用该实例上的按钮。如果您预计原始实例上的按钮会受到影响,则需要在正确的实例上调用它。
-
我之前试过了,可惜没用。
-
您是否尝试调试此代码?放置断点并检查代码是否遵循预期的路径。
-
所以,这段代码是 Form1 类的一部分。现在,如果您查看第一条评论,我认为您有解决方案。此代码在 form1 的不同实例上执行,而不是在您期望的实例上执行。尝试在调用 fr.login 之前调用 fr.Show(),我敢打赌你会在 Form1 的错误实例上看到禁用按钮
-
如果 button1_click 的代码是从 Form1 的第一个实例中执行的,那么您可以尝试使用 this.login(textbox1.Text, textbox2.Text);