C# – How to change a menuStrip menu text from child window

cmdimenustripwinforms

I need to change a menuStrip item text of the main window (mdi container) from a child window,

something like this:

File
-Login

to

File
-Logout

Best Answer

On the main window add these:

public static MainForm Current;

public string FileLogin
{
    get { return fileLoginToolStripMenuItem.Text; }
    set { fileLoginToolStripMenuItem.Text = value; }
}

Obviously use the name that you set or was automatically set for the menu strip item for the login/logout menu item. then in the form constructor of the main form, set the Current.

public MainForm()
{
    InitializeComponent();
    Current = this;
}

Then from the other window/form you can call (to set the value):

MainForm.Current.FileLogin = "Logout";

But better than this is that you on your child window make an event,

public event Action UserLoggedIn = delegate { };

And on the MainForm have the MainForm subscribe to that event with a reverse of the above...

ChildForm.Current.UserLoggedIn += () => FileLogin = "Logout";

And have the child raise the event when the user logs in, with UserLoggedIn().