gis
gis
管理员
管理员
  • 注册日期2003-07-16
  • 发帖数15951
  • QQ
  • 铜币25345枚
  • 威望15368点
  • 贡献值0点
  • 银元0个
  • GIS帝国居民
  • 帝国沙发管家
  • GIS帝国明星
  • GIS帝国铁杆
阅读:1900回复:3

mo+c#中的 tips 实现

楼主#
更多 发布于:2004-07-16 11:30
<H2> </H2>
<P>using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;</P>
<P>namespace WindowsApplication67
{
 /// <SUMMARY>
 /// Form1 的摘要说明。
 /// </SUMMARY>
 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;</P>
<P>  public Form1()
  {
   //
   // Windows 窗体设计器支持所必需的
   //
   InitializeComponent();</P>
<P>   //
   // TOD 在 InitializeComponent 调用后添加任何构造函数代码
   //
  }</P>
<P>  /// <SUMMARY>
  /// 清理所有正在使用的资源。
  /// </SUMMARY>
  protected override void Dispose( bool disposing )
  {
   if( disposing )
   {
    if (components != null)
    {
     components.Dispose();
    }
   }
   base.Dispose( disposing );
  }</P>
<P>  #region Windows 窗体设计器生成的代码
  /// <SUMMARY>
  /// 设计器支持所需的方法 - 不要使用代码编辑器修改
  /// 此方法的内容。
  /// </SUMMARY>
  private void InitializeComponent()
  {
   this.components = new System.ComponentModel.Container();
   System.Resources.ResourceManager resources = new System.Resources.ResourceManager(typeof(Form1));
   this.axMap1 = new AxMapObjects2.AxMap();
   this.textBox1 = new System.Windows.Forms.TextBox();
   this.timer1 = new System.Windows.Forms.Timer(this.components);
   ((System.ComponentModel.ISupportInitialize)(this.axMap1)).BeginInit();
   this.SuspendLayout();
   //
   // axMap1
   //
   this.axMap1.Location = new System.Drawing.Point(16, 24);
   this.axMap1.Name = "axMap1";
   this.axMap1.OcxState = ((System.Windows.Forms.AxHost.State)(resources.GetObject("axMap1.OcxState")));
   this.axMap1.Size = new System.Drawing.Size(392, 224);
   this.axMap1.TabIndex = 0;
   this.axMap1.MouseDownEvent += new AxMapObjects2._DMapEvents_MouseDownEventHandler(this.axMap1_MouseDownEvent);
   this.axMap1.MouseMoveEvent += new AxMapObjects2._DMapEvents_MouseMoveEventHandler(this.axMap1_MouseMoveEvent);
   //
   // textBox1
   //
   this.textBox1.Location = new System.Drawing.Point(168, 64);
   this.textBox1.Name = "textBox1";
   this.textBox1.Size = new System.Drawing.Size(80, 21);
   this.textBox1.TabIndex = 1;
   this.textBox1.Text = "textBox1";
   //
   // timer1
   //
   this.timer1.Enabled = true;
   this.timer1.Tick += new System.EventHandler(this.timer1_Tick);
   //
   // Form1
   //
   this.AutoScaleBaseSize = new System.Drawing.Size(6, 14);
   this.ClientSize = new System.Drawing.Size(496, 285);
   this.Controls.Add(this.textBox1);
   this.Controls.Add(this.axMap1);
   this.Name = "Form1";
   this.Text = "Form1";
   this.Load += new System.EventHandler(this.Form1_Load);
   ((System.ComponentModel.ISupportInitialize)(this.axMap1)).EndInit();
   this.ResumeLayout(false);</P>
<P>  }
  #endregion</P>
<P>  /// <SUMMARY>
  /// 应用程序的主入口点。
  /// </SUMMARY>
  [STAThread]
  static void Main()
  {
   Application.Run(new Form1());
  }</P>
<P>  private void Form1_Load(object sender, System.EventArgs e)
  {
   MapObjects2.IMoDataConnection  dc;
   MapObjects2.IMoMapLayer  layer;
   dc=new MapObjects2.DataConnectionClass();
   <a href='mailtdc.Database=@"f:\data\usa' target="_blank" >dc.Database=@"f:\data\usa</A>";
   if (!dc.Connect())
   {
    MessageBox.Show("无法连");
   }
   else
   {
    layer=new MapObjects2.MapLayerClass();
    layer.GeoDataset=dc.FindGeoDataset("STATES");
    axMap1.Layers.Add(layer);</P>
<P>   </P>
<P>   tips=new maptips2();
   tips.initialize(axMap1,timer1,textBox1);
            tips.setlay(layer,"STATE_NAME");</P>
<P>}
  }</P>
<P>  private void axMap1_MouseDownEvent(object sender, AxMapObjects2._DMapEvents_MouseDownEvent e)
  {
   MapObjects2.Rectangle  r;
   r=   new MapObjects2.RectangleClass();
   r=axMap1.TrackRectangle() ;</P>
<P>   axMap1.Extent=r;</P>
<P>  }</P>
<P>  private void axMap1_MouseMoveEvent(object sender, AxMapObjects2._DMapEvents_MouseMoveEvent e)
  {
   this.tips.mousemove(e.x,e.y );
  }</P>
<P>  private void timer1_Tick(object sender, System.EventArgs e)
  {
   this.tips.timer();
  }
 }
}</P>












<P>//类</P>
<P>using System;
using MapObjects2;</P>
<P>namespace WindowsApplication67
{
 /// <SUMMARY>
 /// maptips2 的摘要说明。
 /// </SUMMARY>
 public class maptips2
 {
  public maptips2()
  {
   //
   // TOD 在此处添加构造函数逻辑
   //
  }
  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;</P>
<P>  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 ,"");
    </P>
<P>   }
   else
   {
    m_recs=m_layer.SearchByDistance(pt,axMap1.ToMapDistance(10),"");</P>
<P>   }
   </P>
<P>  }
  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;</P>
<P>
  }
  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;</P>
<P>   }
  }
  public void setlay(MapObjects2.IMoMapLayer  layer,string fid)
  {
   m_layer=layer;
   m_field=fid;</P>
<P>  }
  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;</P>
<P>  }
  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;</P>
<P>    }
    else
    {
     flds=m_recs.Fields ;
     fld= flds.Item(m_field);
     s=fld.Value.ToString();
     this.showtiptext(s);</P>
<P>
    }
              
   }
   else
   {
    m_lastx=m_x;
    m_lasty=m_y;</P>
<P>   }</P>
<P>  
  }</P>

<P> }
}
</P>
喜欢0 评分0
GIS麦田守望者,期待与您交流。
jay100125
路人甲
路人甲
  • 注册日期2007-06-13
  • 发帖数53
  • QQ
  • 铜币246枚
  • 威望0点
  • 贡献值0点
  • 银元0个
1楼#
发布于:2007-11-18 20:54
<P>不行啊  为什么……困惑中</P>
举报 回复(0) 喜欢(0)     评分
wjckaxi
路人甲
路人甲
  • 注册日期2004-04-13
  • 发帖数144
  • QQ
  • 铜币149枚
  • 威望0点
  • 贡献值0点
  • 银元0个
2楼#
发布于:2006-07-12 15:39
<P>辛苦~~~支持</P>
菜虫 欢迎光临Blog http://blog.sina.com.cn/wjckaxi
举报 回复(0) 喜欢(0)     评分
lzqcool
路人甲
路人甲
  • 注册日期2005-05-11
  • 发帖数10
  • QQ
  • 铜币117枚
  • 威望0点
  • 贡献值0点
  • 银元0个
3楼#
发布于:2006-07-07 08:29
<P>感谢! </P>
<P><img src="images/post/smile/dvbbs/em02.gif" /></P>
<P>  </P>
举报 回复(0) 喜欢(0)     评分
游客

返回顶部