2016-09-21 17:34:59 movebybike 阅读数 1457
  • C#实现封装

    本课程主要讲解了C#中属性的封装,方法的应用,构造函数的重载,以及值传递和引用传递的区别。在学习本课程之前需要掌握一定的基础知识。

    2587 人正在学习 去看看 徐新帅
本文是将数据结构中常用的链表实现(C#语言)的个人课堂示例展现了一下,旨在为初学者以参考。其中大部分代码做了注释,请大家批评指正!

</pre><pre class="csharp" name="code">using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
//本命名空间LinkList与工程名一致,为自动生成
namespace LinkList
{
    //下面即为链表LinkList的定义
    class LinkList
    {
        //属性或字段部分
        public int Length;                      //Length用来记录链表的长度
        private Node Head;                      //Head是链表的头结点,不存数据
        public LinkList()                       //链表的构造方法,结果会构建一个空链表
        {
            Length = 0;                         //链表初始长度为0
            Head = new Node();                  //实例化头结点Head
        }
        //下面为获取链表的数据元素的方法
        public object GetElem(int i)
        {
            object e=null;                      //定义一个object用来返回数据元素
            if (i > 0 && i <= Length)
            {
                Node p = Head;                  //定义一个结点变量p,并定位于头结点Head
                for (int j = 0; j < i; j++)     //利用循环标识j,控制循环使p定位于第i个结点
                {
                    p = p.Next;
                }
                e = p.Data;                     //将选定结点的数据部分赋值给e
            }
            return e;                           //返回e的值
        }
        //以下为链表插入结点的方法
        public bool Insert(int i, object e)
        {            
            Node p = Head;                      //定义一个结点变量p,并定位于头结点Head
            int j = 0;                          //定义整型变量j,辅助p定位到i所指结点的前驱结点
            while (p != null && j < i - 1)      //当p尚未移动到尾结点之后的位置(null)时,并且j仍在i的前面
            {
                p = p.Next;                     //p后移一个结点
                j++;                            //j向后移动一位
            }
            if (p == null || j > i - 1)         //若p移动到尾结点之后的位置(null)或j不在i的前面,返回“失败”,结束方法
                return false;
            Node s = new Node();                //定义结点变量s并实例化
            s.Data = e;                         //将e赋值给s的数据域
            s.Next = p.Next;                    //s.Next指向p.Next
            p.Next = s;                         //p.Next指向s,完成插入结点s
            Length++;                           //链表长度加一
            return true;                        //返回“成功”,结束
        }
        //下面为输出链表的方法,结果以字符串的形式返回
        public string Print()
        {
            string s="";                        //定义空串s
            Node p = Head.Next;                 //定义结点变量p定位于Head
            while (p != null)                   //在p未到尾结点之后的位置时进行循环
            {
                s+=p.Data.ToString();           //将当前结点的Data转为string累加连接到s
                if (p.Next != null)             //若p不是尾结点,则之间加入“,”分隔符
                    s += ",";
                p = p.Next;                     //p后移一位
            }
            return s;
        }  
        //==============================================================
        //此处可添加其他的方法,比如Empty(),Delete(int i)等
        //==============================================================
        //下面是嵌套在LinkList中的结点(Node)类
        private class Node
        {
            public object Data;                 //数据域
            public LinkList.Node Next;          //链接域
            //构造方法1,用于无数据域的结点实例化
            public Node()
            {
                Next = null;                    //新的结点链接域为null
            }
            //构造方法2,用于给数据域直接赋值的结点实例化
            public Node(object value)
            {
                Data = value;                   //给新结点数据域赋值
                Next = null;                    //新结点链接域为null
            }
        }
    }
}


2012-04-11 04:07:27 huijunliang 阅读数 1454
  • C#实现封装

    本课程主要讲解了C#中属性的封装,方法的应用,构造函数的重载,以及值传递和引用传递的区别。在学习本课程之前需要掌握一定的基础知识。

    2587 人正在学习 去看看 徐新帅

 

用.NET(C#)实现IP定位地理位置

http://blog.sina.com.cn/s/blog_49b6b5590100kkxr.html

2016-03-13 11:43:18 jsjdtb356 阅读数 10557
  • C#实现封装

    本课程主要讲解了C#中属性的封装,方法的应用,构造函数的重载,以及值传递和引用传递的区别。在学习本课程之前需要掌握一定的基础知识。

    2587 人正在学习 去看看 徐新帅
C#-winform地图定位的实现-百度地图API
需求:从硬件设备获取GPS等信息,实时在地图上显示定位信息,同时可以查询一段时间内的位置轨迹。
TIP1:从硬件获取的原始GPS数据,最好经过转换成百度GPS坐标或者Google坐标之后再在地图上标出来,否则会存在较大偏差。
TIP2:百度API调用要有获得访问应用的AK,同时可以参考百度提供的丰富的API示例。
地址:http://developer.baidu.com/map/index.html
http://developer.baidu.com/map/jsdemo.htm#a6_2

实现过程:winform中使用webBrowser控件,webBrowser控件用来装载并显示你要的地图。地图通过网页(.htm)文件来做,参考百度API示例,使用javascript代码来实现,标点和连线,标注文本框等功能。数据获取自文件(XML)或者数据库中的经纬度数据(可以通过百度拾点工具去做测试数据)。大概画了个框图。
htm实现(定点例):javascript代码中,创建XML解析器,添加地图,设置显示文本窗口;解析XML文件,获得时间、位置等有效信息;标点、添加图层。代码示例:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
	<meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
	<style type="text/css">
		body, html{width: 100%;height: 100%;margin:0;font-family:"微软雅黑";}
		#allmap{height:423px;width:100%;}
	</style>
	<script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=HudrPv3onektDMvvIwPEo***"></script>
    <script type="text/javascript" src="http://developer.baidu.com/map/jsdemo/demo/convertor.js"></script>
	<title>经纬度定位</title>
</head>
<body>
	<div id="allmap"></div>
</body>
</html>
上面ak的值,大家申请好之后要填写自己的。我注释了后三位。下面是javascript的function函数
	function myTimer()
	{
	    ///step1:连接数据库,获取最后一行的温度、位置、时间信息
		///step2:是否需要进行GSP坐标转换为百度坐标
		///step3:显示定位点,以及标注信息(GPS坐标、温度、时间)
		//step1:读取XML数据信息
		xmlDoc.async = false;
		xmlDoc.resolveExternals = false;
		xmlDoc.load("FE68CD.xml");                                   //装载XML文件
		var arrNodes = xmlDoc.getElementsByTagName('message');          //获取当前一组温度、经纬度、设备号、时间信息
		Num = arrNodes.length;
		SheBeiHao = arrNodes[Num - 1].childNodes[0].childNodes[0].nodeValue;
		WenDu = arrNodes[Num - 1].childNodes[1].childNodes[0].nodeValue;
		JinDu = arrNodes[Num - 1].childNodes[2].childNodes[0].nodeValue;
		WeiDu = arrNodes[Num - 1].childNodes[3].childNodes[0].nodeValue;
		ShiJian = arrNodes[Num - 1].childNodes[4].childNodes[0].nodeValue;
		//2014/12/24 星期三修改,GPS转百度点在后台已经做过,不需要转换直接显示即可
		///step2:是否需要进行GSP坐标转换为百度坐标
		///step3:显示定位点,以及标注信息(GPS坐标、温度、时间)
		//清除所有地图覆盖物
		map.clearOverlays();
		var BaiDuPoint = new BMap.Point(JinDu, WeiDu);
        map.centerAndZoom(BaiDuPoint, 17);                               //设置中心点和显示等级
		infoWindow.setContent("设备号:" + SheBeiHao + ";温度:" + WenDu  + ";经度:" + BaiDuPoint.lng + ";纬度:" + BaiDuPoint.lat + ";时间:" + ShiJian);
		var marker = new BMap.Marker(BaiDuPoint);
		map.addOverlay(marker);
		map.openInfoWindow(infoWindow, BaiDuPoint);                     //打开信息窗口
		map.setCenter(BaiDuPoint);                                      //以当前的坐标点为中心显示
	}
百度API提供了很详细的实例,复杂功能也有,大家可以去上面的地址参考一下。
XML文件(定位例)实现:
<?xml version="1.0" encoding="utf-8"?>
<root>
  <message Num="1">
    <DeviceId>FE68CD</DeviceId>
    <Temp>24.7℃</Temp>
    <Location_Lng>120.27748457854</Location_Lng>
    <Location_Lat>31.489598073044</Location_Lat>
    <Time>2015-10-26 16:26:05</Time>
  </message>
</root>
最终的效果实测图:
定位图:


轨迹实测图:


总结:轨迹的显示差强人意,可能是GPS数据上传的周期较长的原因,另外实测过程中会出现大量GPS点完全一致的情况,不知道是不是原始GPS数据经过转换成百度地图数据之后的原因,图中的点的间隔也不是很均匀。

2019-06-14 21:27:58 weixin_43653287 阅读数 929
  • C#实现封装

    本课程主要讲解了C#中属性的封装,方法的应用,构造函数的重载,以及值传递和引用传递的区别。在学习本课程之前需要掌握一定的基础知识。

    2587 人正在学习 去看看 徐新帅

C#如何将光标定位到文本框末尾(最后一位)

三步即可实现:获取焦点、设置光标到文末、滚动光标到文末

 

源码如下

代码如下:private void Movetoend()
{
//让文本框获取焦点
this.TextBox1.Focus();
//设置光标的位置到文本尾
this.TextBox1.Select(this.TextBox1.TextLength, 0);
//滚动到控件光标处
this.TextBox1.ScrollToCaret();
}

本文由查霆原创,转载需授权。原文地址:http://www.zhating.cn/index.php/post/55.html

2011-12-15 00:39:05 han3262302 阅读数 224
  • C#实现封装

    本课程主要讲解了C#中属性的封装,方法的应用,构造函数的重载,以及值传递和引用传递的区别。在学习本课程之前需要掌握一定的基础知识。

    2587 人正在学习 去看看 徐新帅

//实现PPT文本查找功能

//关键代码

private void searchPPT(string[] keyWordList,string pptFileName)//在指定的ppt文档中搜索keyWord

{

//Microsoft powerpoint 11.0 object library这个是所添加的引用





showMsg(lbShowMsg,"启动搜索"+pptFileName);

//其中Presentation代表一个 PowerPoint 文档,Slide表示PowerPoint文档中的单张幻灯片

//TextFrame是幻灯片上的文本框,TextRange是文本框中的文本。

PowerPoint.ApplicationClass pa;

PowerPoint.Presentation pp;

pa=null;

pp=null;

try

{



showMsg(lbShowMsg,"尝试打开 "+pptFileName);



//打开ppt文档

pa=new PowerPoint.ApplicationClass();

pp=pa.Presentations.Open(pptFileName,

Microsoft.Office.Core.MsoTriState.msoTrue,

Microsoft.Office.Core.MsoTriState.msoTrue,Microsoft.Office.Core.MsoTriState.msoFalse);



PowerPoint.TextRange oText;

//总的幻灯片数

int slideCount=pp.Slides.Count;

//对每张幻灯片

foreach(PowerPoint.Slide slide in pp.Slides)

{



showMsg(lbShowMsg,"正在搜索"+pptFileName+" 幻灯片"+slide.SlideNumber.ToString()+"/"+slideCount);

//对所有的元素

foreach(PowerPoint.Shape shape in slide.Shapes)

{

//如果此幻灯片中有文本框

if(shape.HasTextFrame==Microsoft.Office.Core.MsoTriState.msoTrue)

{

//对每组关键字

foreach(string keyWord in keyWordList)

{

oText=null;

oText=shape.TextFrame.TextRange.Find



(keyWord,0,Microsoft.Office.Core.MsoTriState.msoFalse,Microsoft.Office.Core.MsoTriState.msoTrue);

if (oText!=null)

{



string temp=pptFileName.Remove(0,pptFileName.LastIndexOf("\\")+1);

string name=temp.Remove(temp.LastIndexOf("."),4);

int index=slide.SlideNumber;

//添加到搜索结果中

lbResult.Items.Add(name+" 幻灯片"+index.ToString()+"/"+slideCount);

lbResult.Update();

resultText.Add(shape.TextFrame.TextRange.Text);

continue;

}

}

}

}

}



}



catch

{

}

finally

{

//释放资源

if(pp!=null)

{

System.Runtime.InteropServices.Marshal.ReleaseComObject(pp);

pp=null;

}

if(pa!=null)

{

System.Runtime.InteropServices.Marshal.ReleaseComObject(pa);

pa=null;

}





}
}

C# .NET实现Socket通信

阅读数 1306

没有更多推荐了,返回首页