private void InitToolStripItems() { List <object> objectList = ReflectionManager.CreateInstancesByInterfaceWithOutAbstract(typeof(IHeaderSettingToolStripItem)); toolStripItems = new ToolStripItem[objectList.Count]; foreach (object obj in objectList) { IHeaderSettingToolStripItem iHeaderSettingToolStripItem = obj as IHeaderSettingToolStripItem; //iHeaderSettingToolStripItem.FpSpread = fpMain; toolStripItems[iHeaderSettingToolStripItem.SortID] = iHeaderSettingToolStripItem as ToolStripItem; } }
private void fpMain_HeaderSettingCommandStatusChanged(object sender, HeaderSettingCommandStatus commandStatus) { //第一次接收Fp的编辑命令时,初始化按钮。 if (toolStripItems == null) { InitToolStripItems(); } //将Fp当前的编辑命令设置给按钮,让按钮处理Fp的命令。例如,当选中的是报表列时,设置Border的按钮都会变灰,就是这里起的作用。 for (int i = 0; i < toolStripItems.Length; i++) { IHeaderSettingToolStripItem iHeaderSettingToolStripItem = toolStripItems[i] as IHeaderSettingToolStripItem; iHeaderSettingToolStripItem.SetCommandStatus(commandStatus); } //将已经处理Fp编辑命令的按钮发送到框架。 if (ProvideToolStripMenu != null) { ProvideToolStripMenu(this, toolStripItems); } }
/// <summary> /// 初始化工具栏按钮。 /// </summary> private void InitToolStripItems() { //获得所有表头设置所需的按钮。 List <object> objectList = ReflectionManager.CreateInstancesByInterfaceWithOutAbstract(typeof(IHeaderSettingToolStripItem)); toolStripItems = new ToolStripItem[objectList.Count]; #region 对按钮进行排序。 SortedList sl = new SortedList(); foreach (object obj in objectList) { IHeaderSettingToolStripItem iHeaderSettingToolStripItem = obj as IHeaderSettingToolStripItem; sl.Add(iHeaderSettingToolStripItem.SortID, iHeaderSettingToolStripItem); } int i = 0; foreach (DictionaryEntry de in sl) { IHeaderSettingToolStripItem iHeaderSettingToolStripItem = de.Value as IHeaderSettingToolStripItem; iHeaderSettingToolStripItem.FpSpread = fpMain; toolStripItems[i] = iHeaderSettingToolStripItem as ToolStripItem; i++; } #endregion }