超图9D组件开发中,初始化场景后,总是需要鼠标点击一下场景,才能在场景左下角才显示经纬度信息,也就是说初始化后没有聚焦鼠标焦点。
初始化场景时显示:
点击场景后显示:
这个是什么原因呢?
我用的是SuperMap Objects.NET9.01版本。
bool bOpen = false; //TODO:打开数据源 string path = new DirectoryInfo("../../../../").FullName + @"Data\" + ClsStaticFields.workspace + ".smwu"; WorkspaceConnectionInfo wsConn = null; if (File.Exists(path)) { wsConn = new WorkspaceConnectionInfo(path); wsConn.Type=WorkspaceType.SMWU; } else { //路径不存在的操作 MessageBox.Show("该路径不存在名为" + ClsStaticFields.workspace + "的工作空间!"); } if (wsConn != null) { bOpen = m_workspace.Open(wsConn); } if (!bOpen) { if (SuperMap.Data.Environment.CurrentCulture == "zh-CN") { //MessageBox.Show("打开工作空间失败!"); return false; } else { //MessageBox.Show("Open the workspace failed."); return false; } } else { return true; }
我先把SceneControl放在一个form里面,然后把此form加载到主窗体里面,在程序初始化的时候不显示经纬度,只有在鼠标点击一下场景才会显示经纬度了。
您理解的正确。
/// <summary> /// 根据workspace和sceneControl构造 SampleRun对象 /// Build SampleRun according to workspace and sceneControl /// </summary> public ClsMsdiSuperMap(Workspace workspace, SceneControl sceneControl) { try { m_workspace = workspace; m_sceneControl = sceneControl; m_sceneControl.Scene.Workspace = workspace; InitializeScene(); } catch (Exception ex) { Trace.WriteLine(ex.Message); } }
你上面的代码没有问题。我的代码里面也是这样写的,但是不行,问题依然存在。
下面代码是我新建的一个demo。
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using SuperMap.UI; namespace SceneControlDemo { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { LoadSceneControl(); } private void LoadSceneControl() { SceneControl sceneControl=new SceneControl(); sceneControl.Dock = DockStyle.Fill; this.Controls.Add(sceneControl); } } }
以上代码出现一个SceneControl,没有经纬度信息。
双击场景控件,才出现经纬度。
请问,用代码添加场景的话需要设置其他属性吗?才会显示经纬度信息???