所以我有一个项目,其中通过一些作为全局变量自动创建的类进行一些自动初始化(是的,它们是静态实例)。在此内部的某个点(它与用户的 C# GUI 无关,因此它不是从任何 C# 类派生的)我需要查看是否设置了标志。
我使用带有选中和未选中状态的工具条菜单来设置或取消设置标志。问题是我很难从这个静态类中查看是否检查了标志。我的类在不同的项目/命名空间中,并创建了一个 DLL,稍后链接到应用程序的 GUI。GUI 依赖于此 Manager 类,因此不能选择使 Manager 类依赖于 GUI。尽管如此,我应该能够知道它的名字或通过其他方式看到它的状态。我尝试了以下方法:
if(Application.OpenForms[0].Owner.Controls["_useLocalImageForInitToolStripMenuItem"].Enabled)
{ };
现在的问题是,在上面的代码片段中,我遇到了一个令人讨厌的错误。那么我该怎么做呢?
错误:
有关调用即时 (JIT) 调试而不是此对话框的详细信息,请参阅此消息的末尾。
************** 异常文本 ************** System.ArgumentOutOfRangeException:索引超出范围。必须是非负数且小于集合的大小。参数名称: 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:C:\Dropbox\My Dropbox\Public\Program Code\RoboCup\mainApp\MainForm.cs 中 mainApp.MainForm.ButtonInitClick(Object sender, EventArgs e) 的第 494 行: System.Windows.Forms.Control.OnClick(EventArgs e) 处 System.Windows.Forms.Button.OnClick(EventArgs e) 处 System.Windows.Forms.Button.OnMouseUp(MouseEventArgs 事件) 处的第 389 行。
和private System.Windows.Forms.ToolStripMenuItem _useLocalImageForInitToolStripMenuItem;
this._useLocalImageForInitToolStripMenuItem.CheckState = System.Windows.Forms.CheckState.Checked;
this._useLocalImageForInitToolStripMenuItem.Name = "_useLocalImageForInitToolStripMenuItem";
this._useLocalImageForInitToolStripMenuItem.Size = new System.Drawing.Size(242, 22);
this._useLocalImageForInitToolStripMenuItem.Text = "Use local image for Initialization";
this._useLocalImageForInitToolStripMenuItem.Click += new System.EventHandler(this.