刚刚接触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();
}
}
}
复制教程上的代码也还是同样的错误。下面是代码:高手帮帮解决下啊!!!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();
}
}
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货