如何点击右键直接打开workspacecontrol中的三维场景

0 投票

代码如下:

private void mnuOpenWks_Click(object sender, EventArgs e)
        {
            this.openFileDialog1.Title = "打开工作空间";
            this.openFileDialog1.FileName = "";
            this.openFileDialog1.Filter = "工作空间文件(*.sxwu)|*.sxwu|工作空间文件(*.smwu)|*.smwu";
            if (this.openFileDialog1.ShowDialog() == DialogResult.OK)
            {
                string fileName = openFileDialog1.FileName;
                WorkspaceConnectionInfo wsinfo = new WorkspaceConnectionInfo(fileName);
                m_workspace.Open(wsinfo);
                m_sceneControl.Scene.Workspace = m_workspace;
                m_sceneControl.Scene.Open("Model");
                workspaceControl1.WorkspaceTree.Workspace = m_workspace;
                layer3DsTree.Scene = m_sceneControl.Scene;
            }
        }

上述代码只能打开名为“Model”的三维场景,我想通过点击workspacrcontrol中的三维场景从而直接打开文件,请问我的代码该怎么更改呢?我提问过相关问题,但是根据提示,没有在help文档和samplecode中找到具体的代码,这里涉及到的节点点击事件把我绕晕了,搞了好久还是弄不清该怎么实现这个功能

4月 26 分类:  107次浏览 | 用户: 15005935112 初出茅庐 (20 分)

1个回答

1 投票
 
已采纳

您好,这个可以很容易实现。

比如您可以考虑这个解决方案,写一个判断事件,判断当前选择节点类型为场景节点,则取出当前节点场景数据Scenc,将该Scene在Scenecontrol中打开;为地图节点则获取地图数据map,在MapControl中打开地图,等等。

然后将该事件绑定给WorkspaceTree的SelectionChanged事件,该事件是当前工作空间数选择节点改变时便会执行。

比如NodeMouseDouleClick是节点被双击时执行,NodeMouseClick节点被单机时执行等等,所有的鼠标事件都是存在的您可以根据您的需求来选择。

4月 26 用户: 执笔画月 名扬四海 (1,747 分)
采纳于 4月 26 用户:15005935112
我将workspacecontrol控件改回workspacetree,更容易弄出来,谢谢您
WorkspaceControl里面其实有Sorkspacetree,control是还集成了一些其他的小视图按钮。

WorkspaceControl.WorkspaceTree和直接用WorkspaceTree是一样的效果,这俩WorkspaceTree内容一样。
是的我发现了,不过对于我这个小白而言,直接通过定义worksapcetree中的节点双击事件会比较好理解一些
...