我无法在stackoverflow上找到答案,所以在这里。我在单击子窗体上的按钮时尝试更改MenuStrip子项的文本。以下是我子表单上的“提交”按钮的代码。单击时,应将“登录”文本更改为“注销”。代码似乎很好,没有错误但不更新文本。
public AccessForm()
{
InitializeComponent();
}
private void btnSubmit_Click(object sender, EventArgs e)
{
try
{
if (txtUser.Text == "admin" && txtPass.Text == "1234")
{
MessageBox.Show("Access granted.", "Access");
playgroundPlannersForm mainForm = new playgroundPlannersForm();
mainForm.logInToolStripMenuItem.Text = "Log Out";
this.Close();
}
else
{
MessageBox.Show("Incorrect Username or Password.", "Warning");
txtUser.Clear();
txtPass.Clear();
txtUser.Focus();
}
}
catch (Exception ex)
{
MessageBox.Show("Message: " + ex, "Error");
}
}
private void btnCancel_Click(object sender, EventArgs e)
{
this.Close();
}
答案 0 :(得分:1)
您正在创建主窗体的新实例并进行更改;你需要传递对原始表单的引用并使用它来更新它。
这是一种方法。在您的子表单中..添加此属性:
public playgroundPlannersForm ParentForm { get; set; }
..然后,在上面的代码中,使用:
MessageBox.Show("Access granted.", "Access");
//playgroundPlannersForm mainForm = new playgroundPlannersForm(); <--- not needed anymore
ParentForm.logInToolStripMenuItem.Text = "Log Out";
在主窗体中,在显示子窗体之前..执行此操作:
SubForm subform = new SubForm();
subform.ParentForm = this;
subform.Show();
将父设置为创建它的表单(根据您的代码,它是正确的表单)。您可能还需要进入表单设计器代码并将loginToolStripMenuItem公开(如果尚未公开)。