mo+c#中的 tips 实现
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
namespace WindowsApplication67
{
///
/// Form1 的摘要说明。
///
public class Form1 : System.Windows.Forms.Form
{
private AxMapObjects2.AxMap axMap1;
private System.Windows.Forms.TextBox textBox1;
private System.Windows.Forms.Timer timer1;
private System.ComponentModel.IContainer components;
public maptips2 tips;
public Form1()
{
//
// Windows 窗体设计器支持所必需的
//
InitializeComponent();
//
// TODO: 在 InitializeComponent 调用后添加任何构造函数代码
//
}
///
/// 清理所有正在使用的资源。
///
protected override void Dispose( bool disposing )
{
if( disposing )
{
if (components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}
Windows 窗体设计器生成的代码
///
/// 应用程序的主入口点。
///
[STAThread]
static void Main()
{
Application.Run(new Form1());
}
private void Form1_Load(object sender, System.EventArgs e)
{
MapObjects2.IMoDataConnection dc;
MapObjects2.IMoMapLayer layer;
dc=new MapObjects2.DataConnectionClass();
dc.Database=@"f:\data\usa";
if (!dc.Connect())
{
MessageBox.Show("无法连");
}
else
{
layer=new MapObjects2.MapLayerClass();
layer.GeoDataset=dc.FindGeoDataset("STATES");
axMap1.Layers.Add(layer);
tips=new maptips2();
tips.initialize(axMap1,timer1,textBox1);
tips.setlay(layer,"STATE_NAME");
}
}
private void axMap1_MouseDownEvent(object sender, AxMapObjects2._DMapEvents_MouseDownEvent e)
{
MapObjects2.Rectangle r;
r= new MapObjects2.RectangleClass();
r=axMap1.TrackRectangle() ;
axMap1.Extent=r;
}
private void axMap1_MouseMoveEvent(object sender, AxMapObjects2._DMapEvents_MouseMoveEvent e)
{
this.tips.mousemove(e.x,e.y );
}
private void timer1_Tick(object sender, System.EventArgs e)
{
this.tips.timer();
}
}
}
//类
using System;
using MapObjects2;
namespace WindowsApplication67
{
///
/// maptips2 的摘要说明。
///
public class maptips2
{
public maptips2()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
protected int m_x;
protected int m_y;
protected int m_lastx;
protected int m_lasty;
protected AxMapObjects2.AxMap axMap1;
protected System.Windows.Forms.Timer m_time;
protected System.Windows.Forms.TextBox m_edit;
protected MapObjects2.IMoMapLayer m_layer;
protected string m_field;
protected MapObjects2.Recordset m_recs;
public void doseach()
{
MapObjects2.Point pt;
pt=new MapObjects2.PointClass();
pt=axMap1.ToMapPoint(m_x,m_y);
if (m_layer.shapeType.ToString()=="23")
{
m_recs=m_layer.SearchShape(pt,MapObjects2.SearchMethodConstants.moPointInPolygon ,"");
}
else
{
m_recs=m_layer.SearchByDistance(pt,axMap1.ToMapDistance(10),"");
}
}
public void initialize(AxMapObjects2.AxMap map,System.Windows.Forms.Timer tmr,System.Windows.Forms.TextBox edit )
{
axMap1=map;
m_time=tmr;
m_edit=edit;
m_edit.Visible=false;
}
public void mousemove(int x,int y)
{
if ( m_time.Interval==1)
{
m_x=x;
m_y=y;
m_time.Interval=100;
}
else
{
m_edit.Visible=false;
}
}
public void setlay(MapObjects2.IMoMapLayer layer,string fid)
{
m_layer=layer;
m_field=fid;
}
public void showtiptext(string text)
{
m_edit.Text=text;
m_edit.Visible=true;
m_edit.Left=axMap1.Left+m_x;
m_edit.Top =axMap1.Top+m_y+20;
}
public void timer()
{
string s;
MapObjects2.IMoFields flds;
MapObjects2.IMoField fld ;
if ((m_x==m_lastx)&&(m_y==m_lasty))
{
m_time.Interval=1;
doseach();
if(m_recs.EOF )
{
m_edit.Visible=false;
}
else
{
flds=m_recs.Fields ;
fld= flds.Item(m_field);
s=fld.Value.ToString();
this.showtiptext(s);
}
}
else
{
m_lastx=m_x;
m_lasty=m_y;
}
}
}
}
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
namespace WindowsApplication67
{
///
/// Form1 的摘要说明。
///
public class Form1 : System.Windows.Forms.Form
{
private AxMapObjects2.AxMap axMap1;
private System.Windows.Forms.TextBox textBox1;
private System.Windows.Forms.Timer timer1;
private System.ComponentModel.IContainer components;
public maptips2 tips;
public Form1()
{
//
// Windows 窗体设计器支持所必需的
//
InitializeComponent();
//
// TODO: 在 InitializeComponent 调用后添加任何构造函数代码
//
}
///
/// 清理所有正在使用的资源。
///
protected override void Dispose( bool disposing )
{
if( disposing )
{
if (components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}
Windows 窗体设计器生成的代码
///
/// 应用程序的主入口点。
///
[STAThread]
static void Main()
{
Application.Run(new Form1());
}
private void Form1_Load(object sender, System.EventArgs e)
{
MapObjects2.IMoDataConnection dc;
MapObjects2.IMoMapLayer layer;
dc=new MapObjects2.DataConnectionClass();
dc.Database=@"f:\data\usa";
if (!dc.Connect())
{
MessageBox.Show("无法连");
}
else
{
layer=new MapObjects2.MapLayerClass();
layer.GeoDataset=dc.FindGeoDataset("STATES");
axMap1.Layers.Add(layer);
tips=new maptips2();
tips.initialize(axMap1,timer1,textBox1);
tips.setlay(layer,"STATE_NAME");
}
}
private void axMap1_MouseDownEvent(object sender, AxMapObjects2._DMapEvents_MouseDownEvent e)
{
MapObjects2.Rectangle r;
r= new MapObjects2.RectangleClass();
r=axMap1.TrackRectangle() ;
axMap1.Extent=r;
}
private void axMap1_MouseMoveEvent(object sender, AxMapObjects2._DMapEvents_MouseMoveEvent e)
{
this.tips.mousemove(e.x,e.y );
}
private void timer1_Tick(object sender, System.EventArgs e)
{
this.tips.timer();
}
}
}
//类
using System;
using MapObjects2;
namespace WindowsApplication67
{
///
/// maptips2 的摘要说明。
///
public class maptips2
{
public maptips2()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
protected int m_x;
protected int m_y;
protected int m_lastx;
protected int m_lasty;
protected AxMapObjects2.AxMap axMap1;
protected System.Windows.Forms.Timer m_time;
protected System.Windows.Forms.TextBox m_edit;
protected MapObjects2.IMoMapLayer m_layer;
protected string m_field;
protected MapObjects2.Recordset m_recs;
public void doseach()
{
MapObjects2.Point pt;
pt=new MapObjects2.PointClass();
pt=axMap1.ToMapPoint(m_x,m_y);
if (m_layer.shapeType.ToString()=="23")
{
m_recs=m_layer.SearchShape(pt,MapObjects2.SearchMethodConstants.moPointInPolygon ,"");
}
else
{
m_recs=m_layer.SearchByDistance(pt,axMap1.ToMapDistance(10),"");
}
}
public void initialize(AxMapObjects2.AxMap map,System.Windows.Forms.Timer tmr,System.Windows.Forms.TextBox edit )
{
axMap1=map;
m_time=tmr;
m_edit=edit;
m_edit.Visible=false;
}
public void mousemove(int x,int y)
{
if ( m_time.Interval==1)
{
m_x=x;
m_y=y;
m_time.Interval=100;
}
else
{
m_edit.Visible=false;
}
}
public void setlay(MapObjects2.IMoMapLayer layer,string fid)
{
m_layer=layer;
m_field=fid;
}
public void showtiptext(string text)
{
m_edit.Text=text;
m_edit.Visible=true;
m_edit.Left=axMap1.Left+m_x;
m_edit.Top =axMap1.Top+m_y+20;
}
public void timer()
{
string s;
MapObjects2.IMoFields flds;
MapObjects2.IMoField fld ;
if ((m_x==m_lastx)&&(m_y==m_lasty))
{
m_time.Interval=1;
doseach();
if(m_recs.EOF )
{
m_edit.Visible=false;
}
else
{
flds=m_recs.Fields ;
fld= flds.Item(m_field);
s=fld.Value.ToString();
this.showtiptext(s);
}
}
else
{
m_lastx=m_x;
m_lasty=m_y;
}
}
}
}