5. 在窗体上双击显示窗体代码窗口,在代码窗口的顶部增加“using”命令:
using System;
using System.Windows.Forms; // ArcGIS Engine引用 using ESRI.ArcGIS.SystemUI; using ESRI.ArcGIS.Carto; using ESRI.ArcGIS.Display; using ESRI.ArcGIS.Geometry; using ESRI.ArcGIS.esriSystem; using ESRI.ArcGIS.ToolbarControl; using ESRI.ArcGIS.TOCControl;
注:需注意C#是区分大小写的。当你键入“ESRI.”时,智能敏感的自动完成功能将允许你通过按Tab键完成下一节。 (三) 加载Map文档到MapControl与PageLayoutControl
单独的数据层或者使用ArcMap、ArcGIS桌面应用程序产生的图形文档,能够被加载到MapControl和PageLayoutControl中。你可以加载样例图形文档,或者加载你自己的图形文档。后面你将增加一个浏览图形文档的对话框。
1. 选择Form_Load事件,并输入下列代码(如果你使用你自己的图形文档,要替换为正确的文件名):
// 使用相对路径向PageLayoutControl加载一个图形文档
string filename = @\lf of st. lawrence.mxd\
if ( axPageLayoutControl1.CheckMxFile(filename) ) {
axPageLayoutControl1.LoadMxFile(filename, \
}
2. 在设计模式显示窗体并从属性窗选择axPageLayoutControl1控件,显示axPageLayoutControl事件。在OnPageLayoutReplaced事件上双击向代码窗口添加该事件的处理函数。
3. 在axPageLayoutControl1_OnPageLayoutReplaced事件中键入以下向MapControl加载样例图形文档的代码。当文档被装载入PageLayoutControl时OnPageLayoutReplaced事件将会被触发。
private void axPageLayoutControl1_OnPageLayoutReplaced(object sender, ESRI.ArcGIS.PageLayoutControl.IPageLayoutControlEvents_OnPageLayoutReplacedEvent e)
{
// 加载同样的文档到MapControl
axMapControl1.LoadMxFile(axPageLayoutControl1.DocumentFilename, null, null);
}
// 设置MapControl显示范围至数据的全局范围 axMapControl1.Extent = axMapControl1.FullExtent;
(四) 设置ToolbarControl与TOCControl控件的绑定控件
对于此应用程序,TOCControl和ToolbarControl控件将与PageLayoutControl相互协作,而不是MapControl。为此PageLayoutControl必须设置为绑定控件。TOCControl使用绑定的ActiveView显示图形、图层和符号。而位于ToolbarControl上的任何命令、工具或菜单项会受绑定控件的显示影响。
1. 在Form_Load事件中的加载文档代码的后面键入以下红色部分内容:
private void Form1_Load(object sender, System.EventArgs e) {
// 使用相对路径向PageLayoutControl加载一个图形文档
string filename = @\lf of st. lawrence.mxd\
// 设置绑定控件
axTOCControl1.SetBuddyControl(axPageLayoutControl1);
if ( axPageLayoutControl1.CheckMxFile(filename) ) { }
axPageLayoutControl1.LoadMxFile(filename, \
axToolbarControl1.SetBuddyControl(axPageLayoutControl1);
}
2. 生成并运行应用程序。图形文档被加载到PageLayoutControl,并且TOCControl列出了图形文档中的数据图层。使用TOCControl通过复选和取消复选框控制图层的可见性。默认地,图形文档的焦点图(focus map)被装入MapControl控件。在这种当前情况下,ToolbarControl控件显示是空的,因为没有为它添加任何命令。试着缩放窗体,你会注意到控件不会改变尺寸。
(五) 处理窗口缩放
当窗口在运行时进行缩放时,PageLayoutControl和MapControl不会自动改变自身的尺寸。要改变控件的尺寸以便它们总是与匹配窗口的范围,你必须将控件锚定在窗口上。如果PageLayoutControl或MapControl包含大量的数据,在窗口缩放期间重绘这些数据显得相当重要。为了提高执行效率,你可以禁止数据重绘直到缩放操作完成后再重绘之。在缩放时,可以用一个可伸缩的位图来替代重绘数据。
1. 在设计模式显示窗体并从属性窗口中选择axPageLayoutControl1。单击Anchor属性,将axPageLayoutControl1锚定在窗体的顶、左、底和右部。
2. 锚定axMapControl控件到窗体的顶、左和底部。