首页 / 浏览问题 / 组件GIS / 问题详情
supermap组件开发想要增加layoutcontrol,如何操作
12EXP 2020年09月10日

我看到想要新增一个layoutcontrol时,用的是

this.Controls.Add(mapLayoutControl);

根据联机帮助,我看到this指的是 SuperMap.Desktop.Application.ActiveApplication.SplashForm.Controls,

但我直接写 SuperMap.Desktop.Application.ActiveApplication.SplashForm.Controls . Add(mapLayoutControl)

运行报错 System.ArgumentException:“在某个线程上创建的控件不能成为在另一个线程上创建的控件的父级。”

怎样正确的新建一个layoutcontrol呢?

1个回答

你用的是桌面扩展开发还是组件开发?

this要看你的这个是放在那里的,放在不同的位置,指定的对象是不一样的。

 SuperMap.Desktop.Application.ActiveApplication这是桌面扩展开发的代码,你先确认一下你使用的是iObjects.net开发还是iDesktop进行的扩展开发。

4,620EXP 2020年09月10日
我用的桌面扩展,在CtrlAction里写这句是不是不行啊?

肯定不行呀,SuperMap.Desktop.Application.ActiveApplication.SplashForm这个是idesktop的启动界面,你想要的是直接新建一个布局窗口吧,就相当于idesktop中在工作空间管理器中选中布局节点,右键——新建布局。对应的代码如下:

IFormLayout formLayout = SuperMap.Desktop.Application.ActiveApplication.CreateLayoutWindow();
// 获取当前窗口的布局对象
SuperMap.Layout.MapLayout layout = formLayout.MapLayoutControl.MapLayout;
明白啦,谢谢啦
...