WinForms Menu Toolstrip Get Status
- by Yeti
So I have a project where there is some automatic initialization going on through some classes that are created automatically as global variables (yeah they are static instances). At a point inside this (it has no relation with the C# GUI for the user, so it isn't derived from any C# class) I need to see if a flag is set or not.
I use toolstrip menu with checked and unchecked status in order to set or unset the flag. The problem is that I have difficulties to see if the flag is checked or not from this static class. My class is inside a different project/namespace and a DLL is created what later is linked to the GUI of the application. The GUI depends from this Manager class so making the Manager class to depend from the GUI is not an option. Nevertheless, I should be able to see its state knowing its name or through some other means. I have tried the following:
if(Application.OpenForms[1].Owner.Controls["useLocalImageForInitToolStripMenuItem"].Enabled)
{ };
Now the problem is that on the upper code snippet I get a nasty error. So how do I do this?
The toolstrip menu:
The error:
See the end of this message for
details on invoking just-in-time
(JIT) debugging instead of this dialog
box.
***** Exception Text ******* System.ArgumentOutOfRangeException:
Index was out of range. Must be
non-negative and less than the size of
the collection. Parameter name: index
at
System.Collections.ArrayList.get_Item(Int32
index) at
System.Windows.Forms.FormCollection.get_Item(Int32
index) at
Manager.MyMainManager.MyMainManager.RealTimeInit()
in C:\Dropbox\My
Dropbox\Public\Program
Code\RoboCup\Manager\MyMainManager\MyMainManager.cs:line
494 at
mainApp.MainForm.ButtonInitClick(Object
sender, EventArgs e) in C:\Dropbox\My
Dropbox\Public\Program
Code\RoboCup\mainApp\MainForm.cs:line
389 at
System.Windows.Forms.Control.OnClick(EventArgs
e) at
System.Windows.Forms.Button.OnClick(EventArgs
e) at
System.Windows.Forms.Button.OnMouseUp(MouseEventArgs
mevent) at
System.Windows.Forms.Control.WmMouseUp(Message&
m, MouseButtons button, Int32 clicks)
at
System.Windows.Forms.Control.WndProc(Message&
m) at
System.Windows.Forms.ButtonBase.WndProc(Message&
m) at
System.Windows.Forms.Button.WndProc(Message&
m) at
System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message&
m) at
System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message&
m) at
System.Windows.Forms.NativeWindow.Callback(IntPtr
hWnd, Int32 msg, IntPtr wparam, IntPtr
lparam)