刚刚接触supermap参照教程做了个实例,但是soDataSource总是为null
复制教程上的代码也还是同样的错误。下面是代码:高手帮帮解决下啊!!!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;namespace MySuperMap
{
    public partial class frmMain : Form
    {
        public frmMain()
        {
            InitializeComponent();
        }        private void frmMain_Load(object sender, EventArgs e)
        {
            supermap1.Connect(superworkspace1.CtlHandle);//建立supermap与superworkspace之间的关系
            string strAlias;//数据源名称
            SuperMapLib.seEngineType nEngineType;//数据引擎类型
            string strDataSourceName;//数据源绝对路径名
            SuperMapLib.soDataSource objDataSource;//数据源对象,指向打开的数据源
            bool bReadOnly;//数据源里的数据是不是只读
            bool bAddToHead;//是否加到最上边
            int i;//循环变量
            strAlias = "MyDataSource";
            nEngineType = SuperMapLib.seEngineType.sceSDBPlus;            strDataSourceName = @"D:\project\MySuperMap\World.sdb";
            bReadOnly = false;// 不设为只读
            //打开数据源
            objDataSource = superworkspace1.OpenDataSource(strDataSourceName,strAlias,nEngineType,bReadOnly);
            MessageBox.Show(objDataSource.Name);
            if (objDataSource == null)
            {
                MessageBox.Show("sorry!");
                return;
            }
            else
            {
                for ( i = 0; i < objDataSource.Datasets.Count; i++)
                {
                    bAddToHead = true;
                    supermap1.Layers.AddDataset(objDataSource.Datasets[i],bAddToHead);
                }
            }
            supermap1.Refresh();
            //修改选中对象风格
            supermap1.selection.Style.PenColor = System.Convert.ToUInt32(System.Drawing.ColorTranslator.ToOle(Color.FromArgb(231, 77, 0)));
            supermap1.selection.Style.PenWidth = 1;
            supermap1.selection.Style.PenStyle = 1;
            supermap1.selection.Style.BrushStyle = 5;
            supermap1.selection.Style.BrushColor = System.Convert.ToUInt32(System.Drawing.ColorTranslator.ToOle(Color.FromArgb(115, 69, 140)));
            supermap1.selection.Style.BrushBackColor = System.Convert.ToUInt32(System.Drawing.ColorTranslator.ToOle(Color.FromArgb(239, 150, 255)));
            supermap1.selection.Style.BrushOpaqueRate = 50; 
            System.Runtime.InteropServices.Marshal.ReleaseComObject(objDataSource); 
            objDataSource = null;
        }        private void frmMain_FormClosing(object sender, FormClosingEventArgs e)
        {
            supermap1.Close();
            supermap1.Disconnect(); 
            superworkspace1.Close();
        }
    }
}