C# 如何从其他表单按钮更改表单菜单项的文本
我在stackoverflow上找不到答案,所以就这样。我试图在单击子窗体上的按钮时更改MenuStrip子项的文本。下面是我的子表单上“提交”按钮的代码。单击时,应将“登录”文本更改为“注销”。代码看起来不错,没有错误,但不会更新文本C# 如何从其他表单按钮更改表单菜单项的文本,c#,C#,我在stackoverflow上找不到答案,所以就这样。我试图在单击子窗体上的按钮时更改MenuStrip子项的文本。下面是我的子表单上“提交”按钮的代码。单击时,应将“登录”文本更改为“注销”。代码看起来不错,没有错误,但不会更新文本 public AccessForm() { InitializeComponent(); } private void btnSubmit_Click(object sender, EventArgs e) { try {
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();
}
您正在创建主窗体的新实例并对其进行更改;您需要传递对原始表单的引用,并使用它来更新它 这里有一个方法。在您的子表单中。。添加此属性:
public playgroundPlannersForm ParentForm { get; set; }
…然后,在上面的代码中,使用以下命令:
MessageBox.Show("Access granted.", "Access");
//playgroundPlannersForm mainForm = new playgroundPlannersForm(); <--- not needed anymore
ParentForm.logInToolStripMenuItem.Text = "Log Out";
这将父级设置为创建它的表单(根据您的代码,这是正确的表单)。您可能还需要进入表单设计器代码并将loginToolStripMenuItem公开(如果尚未公开)。您的想法几乎是正确的。。首先,我会创建一个属性,然后根据您的应用程序/表单的结构。。在创建另一个表单的实例并基于按钮文本执行check或Switch语句时,我还将研究使用Parent/Owner的MDI。有几种方法可以实现这一点。请不要尝试这样做。应该有一些底层对象模型来控制菜单项的状态。你可以在你的子表单中改变它,你的主表单可以做出反应。不要试图在表单或控件之间更改UI元素。代码将很快变得不可管理。
SubForm subform = new SubForm();
subform.ParentForm = this;
subform.Show();