前言
上一篇博文简单介绍了SuperMap iObjects .NET 11i的初始化环境配置,这个部分主要认识下常用控件以及控件与控件之间如何关联并且如何释放资源。
一、基本窗体设计
(1)设计控件布局
对于基本的窗体设计,进行如下控件布局:
(1)MenuStrip:是Windows窗体应用程序中的一个控件,用于创建菜单和工具栏。它允许用户在应用程序中轻松地导航和执行操作;
(2)ToolStrip:是 Windows 窗体应用程序中的一个控件,用于创建工具栏。它提供了一种简单的方式来展示常用命令和操作的图标和按钮;
(3)SplitContainer:是Windows窗体应用程序中的一个控件,用于创建可分隔的容器,使用户可以在同一个窗体中同时查看不同的内容。SplitContainer通常包含两个面板,用户可以拖动分隔条来调整这两个面板的大小,以便根据需要显示更多或更少的内容;
(4)TabControl:通常用于组织和管理应用程序中的多个视图或功能,使用户可以方便地切换和访问不同的内容;
(5)Panel :是 Windows 窗体应用程序中的一个控件,用于创建容器来组织和管理其他控件;
(6)Anchor :是 Windows 窗体应用程序中的一个属性,用于定义控件在其容器中的定位和大小调整行为。通过设置控件的 Anchor 属性,可以指定控件相对于其父容器的边界的定位方式,以便在父容器大小发生变化时,控件可以自动调整其位置和大小,以保持相对于父容器边界的位置不变。
(2)代码创建SuperMap控件
用Panel装载SuperMap控件,其中Panel1装载工作空间管理器WorkspaceControl,Panel2装载图层管理器LayersControl,Panel3装载地图控件MapControl,Panel4装载三维场景控件SceneControl,在控件布局设计好的基础上,通过代码进行SuperMap控件的创建,代码段如下所示:
namespace WindowsFormsApp1
{
public partial class Form1 : Form
{
private Workspace D_workspace;
private WorkspaceControl D_workspaceControl;
private MapControl D_mapControl;
private SceneControl D_sceneControl;
private LayersControl D_layersControl;
public Form1()
{
String mail = ""; // 需要替换为自己的SuperMap账号
String password = "";
bool login = SuperMap.Data.CloudLicense.Login(mail, password);
InitializeComponent();
D_workspace = new Workspace();
D_workspaceControl = new WorkspaceControl();
//控件始终填充整个父容器
D_workspaceControl.Dock = DockStyle.Fill;
//将指定的控件添加到panel1控件中
splitContainer1.Panel1.Controls.Add(D_workspaceControl);
D_layersControl = new LayersControl();
D_layersControl.Dock = DockStyle.Fill;
splitContainer1.Panel2.Controls.Add(D_layersControl);
D_mapControl = new MapControl();
D_mapControl.Dock = DockStyle.Fill;
//将指定的控件添加到panel1控件中
panel3.Controls.Add(D_mapControl);
D_sceneControl = new SceneControl();
D_sceneControl.Dock = DockStyle.Fill;
panel4.Controls.Add(D_sceneControl);
}
}
}
二、主窗体加载时进行控件之间的关联
主窗体加载时,进行工作空间与地图控件、三维场景控件等控件关联。代码如下所示:
private void Form1_Load(object sender, EventArgs e)
{
//工作空间和控件联动
D_workspaceControl.WorkspaceTree.Workspace = D_workspace;
D_mapControl.Map.Workspace = D_workspace;
D_sceneControl.Scene.Workspace = D_workspace;
}
三、程序退出时释放资源
窗体关闭时,对占用的资源进行释放。此处需要注意顺序,先释放MapControl、SceneControl等占用的资源,最后释放Workspace所占用的资源,代码如下所示:
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
D_mapControl.Dispose();
D_layersControl.Dispose();
D_sceneControl.Dispose();
D_workspaceControl.Dispose();
D_workspace.Close();
D_workspace.Dispose();
}
四、运行结果
总结
以上就是有关于SuperMap iObjects 11i .NET控件关联与释放资源的一些过程记录,我们下篇博文再见!