首页 / 浏览问题 / 组件 / 问题详情
C#idesktop插件开发如何调用“标签模式——水平平铺”命令?
6月23
pluginName = "SuperMap.Desktop.Frame";
actionName = "SuperMap.Desktop._CtrlActionWindowsHorizontal";
ctrlAction = DesktopHelper.GetCtrlAction(pluginName, actionName);
ctrlAction.Run();

public static ICtrlAction GetCtrlAction(string pluginName, string actionName)
        {
            ICtrlAction ctrlAction = null;

            try
            {
                Type typeCtrlAction = null;
                Assembly[] assemblies = AppDomain.CurrentDomain.GetAssemblies();
                foreach (Assembly assembly in assemblies)
                {
                    if (assembly.FullName.Contains(pluginName))
                    {
                        Type[] types = assembly.GetTypes();
                        foreach (Type type in types)
                        {
                            if (type.FullName.CompareTo(actionName) == 0)
                            {
                                typeCtrlAction = type;
                            }
                        }
                        break;
                    }
                }
                IFormMain formMain = GetActiveAppMainForm();
                ctrlAction = formMain.RibbonManager[typeCtrlAction].CtrlAction;
            }
            catch (Exception ex)
            {
                DesktopLog("获取 " + pluginName + " , " + actionName + " 命令失败!" + ex.ToString());
            }

            return ctrlAction;
        }

在“ ctrlAction = formMain.RibbonManager[typeCtrlAction].CtrlAction;”中 formMain.RibbonManager[typeCtrlAction]为null,该如何调用呢?

1个回答

您好,由于不确定您的formMain对象具体是指的哪个窗口,所以 formMain.RibbonManager[typeCtrlAction]为null 有多种可能,建议您可以参考以下情况进行排查:

  1. 尝试通过索引的接口确认 formMain.RibbonManager[0] 返回值是否为 null;如果不为 null,建议您检查 formMain.RibbonManager 中是否存在 typeCtrlAction 类型的子项;若不存在,建议您检查 .config 配置文件是否设置正确;
  2. 若 formMain.RibbonManager[0] 也为 null,建议您检查 .config 配置文件中配置的内容,是否配置的调用该插件的时机太早,导致 formMain.RibbonManager 中没有任何子项;
  3. 建议您检查一下 formMain 对象是 iDesktop 中获取的还是自定义的。

希望可以帮到您。

刘程贤  (778分)  学富五车
6月23
...