随笔分类 -  .NET

使用.NET中的Action及Func泛型委托
摘要:委托,在C#编程中占有极其重要的地位,委托可以将函数封装到委托对象中,并且多个委托可以合并为一个委托,委托对象则可以像普通对象一样被存储、传递,之后在任何时刻进行调用,因此,C#中函数回调机制的实现基本上依赖于委托。C#的delegate关键字用于声明委托,它具有将声明委托类型映射到System.Delegate类的能力,System.Delegate类位于mscorlib.dll中,是.NET的基础核心类之一。使用delegate关键字声明一个委托,实质上创建了System.Delegate的派生类,因此委托类型并非结构体也不是其它类型,它是一个类。一个委托对象也就是一个类的实例。以下是D. 阅读全文

posted @ 2012-12-29 19:59 狐狸狡猾不 阅读(8477) 评论(7) 推荐(7) 编辑

C# P2P通信之UPNP操作类的实现
摘要:主要依托于COM互操作来实现添加COM引用 使用UPNP 1.0类型库 npnp.dll主要对UPNP操作做了一个封装1.自定义类型支持publicenumProtocolType{UDP,TCP}///<summary>///端口映射信息///</summary>publicclassPortMappingInfo{publicstringInternalIP;publicintExternalPort;publicintInternalPort;publicProtocolTypetype;publicstringDescription;publicPortMapp 阅读全文

posted @ 2011-03-13 07:51 狐狸狡猾不 阅读(5553) 评论(1) 推荐(0) 编辑

互联网(复杂网络环境) 语音视频 文字 文件传输 原理,P2P
摘要:终于放假结束了,又回到学校了之前一直在做WinForm窗体 现在终于完善了,然后是准备做互联网上的应用,经过长久的探索和学习查阅资料,心里终于有了大致的轮廓 ,明白了大致原理这里以一个类似于QQ的即时通讯软件为例网上有很多的聊天程序源码可以下载,包括实现了文件传输和视频语音的仿QQ系列源代码,但是基本上有一个共同的特点,只适用于局域网 服务端也较少使用异步方式处理但是在实际的网络环境中 很多的计算机通过内网的网关上网,网关具有一个公网的IP地址在互联网中两台计算机通信必然情况复杂以即时通讯为例可以这样做 软件分为客户端和服务器端 其实是一个混合型的P2P架构服务端位于一台具有公网IP地址的计算 阅读全文

posted @ 2011-02-24 19:44 狐狸狡猾不 阅读(2299) 评论(0) 推荐(1) 编辑

C# 程序换肤 自定义窗体
摘要:这段时间放假了又过年 没有什么时间,到现在,经过长时间探索 形成了一个自己的皮肤方案所有窗体的fomborderstyle属性为sizable 经过xp windows7中测试 均保留了系统的动画效果,例如在vista win7中打开 关闭 最小化都有动画大致原理如下:1.自定义BaseForm 处理相应的windows消息,实现窗体拖动 放缩等功能,继承自Form 设计相关事件和属性2.自定义SkinForm继承自BaseForm 设计静态成员和事件以及相关属性,这些静态成员为所有的窗体共享 以控制他们的外观,在任何一个窗体中更改静态成员 都会使所有窗体的外观立即更改3.实际使用的窗体都继承 阅读全文

posted @ 2011-02-08 23:30 狐狸狡猾不 阅读(3067) 评论(14) 推荐(1) 编辑

C#【Fox即时通讯核心】 开发记录之五 (客户端界面基窗体基本完成)
摘要:这个是界面要用到的基窗体此窗体继承自Form 扩展了几十个属性 提供非常丰富的属性来设置窗体的外观,包括窗体发光效果 主题图片(可与背景色融合),以及窗体的控制按钮以及拖拽操作等,凡是继承自此基窗体的其它窗体 几乎不用编写任何代码可以轻松地修改窗体外观 修改为模态对话框等下面是效果图扩展属性此部分并不包含在Fox核心之内 阅读全文

posted @ 2010-12-23 14:57 狐狸狡猾不 阅读(1689) 评论(1) 推荐(0) 编辑

C#【Fox即时通讯核心】 开发记录之四(服务端多线程异步处理数据 主程序大致结构)
摘要:目前这个是服务端主程序大致的结构以后可能进一步修改 使用连接池代码Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--1privateboolrunning=false;2privateIPAddressserverIP;3privateTcpListenerlistener;4privateThreadWaitTread;//监听客户线程响应多个客户端的连接请求等待客户端登陆5privateTcpClientremoteClient;//远程连接6p 阅读全文

posted @ 2010-12-21 12:22 狐狸狡猾不 阅读(1812) 评论(0) 推荐(1) 编辑

C#【Fox即时通讯核心】 开发记录之二(大致模型)
摘要:下面是Fox核心的大致使用模型Server为服务端程序 Client为客户端程序 它们分别拥有Fox服务端核心组件和Fox客户端核心组件,客户端在需要的时候不经过服务端和其它客户端连接 阅读全文

posted @ 2010-12-17 15:11 狐狸狡猾不 阅读(1060) 评论(0) 推荐(0) 编辑

C#【Fox即时通讯核心】 开发记录之一
摘要:经过一段时间学习之后,心里萌生了一点想法 做一个自己的即时通讯软件一来是对所学知识的一些巩固,而来也是在实践的过程中探索和掌握新的知识,我知道对于目前的水平,开发这一的一个东西难度比较大。不过我会尽力去完成它在实践的过程中我会根据进度不定期地更新这个系列的文章,软件完成之后将会发布源代码这是总体的计划:1:开发一个即时通讯核心。 此核心由服务端核心组件和客户端组件构成,此核心将对文字传输,视频,语音,文件传输提供强力支持。这些传输都是面向Internet的 能穿透防火墙,不受NAT影响,实现P2P通讯。我的网名叫:狐狸狡猾不 所以我暂时给此核心取名为Fox核心。Fox核心将能很方便地被其它软件 阅读全文

posted @ 2010-12-17 14:21 狐狸狡猾不 阅读(1300) 评论(2) 推荐(1) 编辑

C#自定义窗体(不设置FormBorderStyle=none)
摘要:一直以来都在自定义窗体上困惑 从最初的把边框隐藏,到使用位图,处理消息支持窗体的拖动等,总是不太理想。因为以前都是将FormBorderStyle设置为none 这样窗体就真的没有系统边框了,这也带来了一些问题 一旦把FormBorderStyle设置为none就等于去掉了窗体的非客户区 系统也就认为窗体是没有边框的,当然这样的窗体也失去了系统指令 具体表现在Windows7上,系统主题让窗体在最大化最小化的时候都有动画效果,打开和关闭窗体的时候也有淡入淡出的效果 一旦把FormBorderStyle设置为none这些效果都将失去经过一段时间之后 终于明白了怎么保留这些效果的同时又可以让客户区 阅读全文

posted @ 2010-12-17 13:10 狐狸狡猾不 阅读(10009) 评论(12) 推荐(4) 编辑

对于分布式即时通讯程序的思考和实践
摘要:计算机网络最根本的目的是实现网络中计算机之间的分布式进程间通信即时通讯所使用的传输协议是TCP和UDPwindows系统和linux系统都支持socket 按照这样的规范 我们可以实现垮平台的信息交换所以我们都经过socket传输数据,TCP和UDP位于网络中的传输层,位于IP层之上 是用户功能的最底层TCP:面向连接的、可靠的、基于字节流的运输层通信协议 数据一定是可靠地到达,先发送的先到,丢包重传 可以提供流控制机制,建立一个TCP连接需要经过3次握手,关闭一个TCP连接需要经过4此握手 ,在一个TCP连接中只支持两方的通信,不支持广播,采用字节流方式,如果字节流太长,将其分段。UDP:无 阅读全文

posted @ 2010-12-13 19:44 狐狸狡猾不 阅读(1101) 评论(2) 推荐(3) 编辑

环形动画Loading控件制作 C#
摘要:看一看效果 此控件设置了常用的外观属性 例如主题色彩 线条宽度 内圆大小 外圆大小都可以调节提供2个对外的方法Start() Stop()控制控件的行为 调用Start()动画开始 Stop()结束动画还原到初始状态以下是字段 该控件继承自Control类代码Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--1privateTimer_Timer;2privatebool_IsLoading=false;3privateint_NumberOfSpo 阅读全文

posted @ 2010-12-12 22:12 狐狸狡猾不 阅读(4364) 评论(4) 推荐(4) 编辑

滚动网页截图 截取超长网页图像
摘要:写完的代码程序还有很多不完善的地方 这是目前的状态 下面是对一个网站首页进行截图 截图后可以保存为指定格式实现原理 使用WebBrowser控件加载需要截图的网页 调用WebBrowser的Navigate(string Url)方法加载需要截图的网页 当网页加载完毕后进行截图此方法也有缺点 WebBrowser不具备IE的智能纠错功能 对某些CSS样式不严格的网页可能出现解析上的错误,导致网页的布局混乱 这样截图的布局也是混乱的对于某些采用ajax技术的网站 根据其加载的方式不同 可能无法窃取到动态延迟加载的内容对于有些网页(极少数)无法进行截图,会出现错误 具体原因目前还没有找出来,不过对 阅读全文

posted @ 2010-12-12 16:17 狐狸狡猾不 阅读(7689) 评论(3) 推荐(0) 编辑

.NET 处理windows消息中获得LParam中XY坐标的两种方法
摘要:1.快速运算获得 通过高级运算符获得 [代码]2.转换成Point对象 此方法容易使用[代码]获得Point对象直接访问point.X point.Y就太轻易了 阅读全文

posted @ 2010-12-11 00:14 狐狸狡猾不 阅读(1022) 评论(0) 推荐(0) 编辑

C#.NET中自定义控件3种方式和需要注意的地方
摘要:很多时候我们需要使用到自定义控件 而在C#中 我们主要以3中方式创建自定义控件,还有些需要注意的地方时常被忽略 比如Click事件,用户控件的Click并不像系统的Button单击1.继承自.NET类库中已有的控件 如TextBox MenuStrip Pannel2.继承自Control类3.继承自UserControl类下面是3个小示例1.继承自类库中现有的控件 下面自定义一个ExtendTextBox 该控件扩展了一个属性,可以现在文本框只能输入数字,字母或者所有字符代码 Code highlighting produced by Actipro CodeHighlighter (fre 阅读全文

posted @ 2010-12-08 16:29 狐狸狡猾不 阅读(19977) 评论(2) 推荐(2) 编辑

制作播放器控制按钮组合控件 GDI+绘制
摘要:制作一个播放器的控制按钮组合控件 较好的封装子控件 并提供公开属性更换外观组合控件还差按钮上的图形 比如中间的播放图标 上一个 下一个 打开 停止的图标,控件使用alpha混合和渐变组合控件一共上下左右四个按钮 自身作为中间的按钮使用,并且可以适应各种宽度和高度我的思路是这样的:总共有五个类 组合控件MP3Buttons 上下左右四个按钮类,主要实现一个周边按钮 其它3个按钮继承自这个按钮,并重写一个方法就可以了,所以主要是实现2个类 组合按钮类,任意一个周边按钮1.先设计一个左边按钮的类 LeftButton:UserControl 本可以继承Control类 不过Control不支持背景透 阅读全文

posted @ 2010-12-05 21:38 狐狸狡猾不 阅读(1615) 评论(2) 推荐(1) 编辑

C# 美化MenuStrip 自定义MenuStrip控件
摘要:更改MenuStrip的外观 让它不再是系统默认的外观 美观的界面总是让人赏心悦目的 文章都比较简单 但是效果很好 很适合像我这样的初学者我在程序员之窗看到过这样的文章 但自己水平有限 没能实现像他所说的那样的美化 不能完全实现.NET类库提供的渲染菜单外观的抽象类,所以集成了一个专用类 并重写其中一些方法,实现的外观的更改,看看效果:这里 我们自定义一个控件 继承自系统的MenuStrip MenuStrip具有一个Renderer属性 此属性接受一个System.Windows.Forms.ToolStripRenderer类的对象 这个类定义了菜单 工具栏的外观 此类是一个抽象类 系统菜 阅读全文

posted @ 2010-12-03 22:42 狐狸狡猾不 阅读(24758) 评论(6) 推荐(7) 编辑

C# 无边框异型窗体制作
摘要:我是一个C#的初学者 只要涉及到windows窗体编程 都希望窗体的外观比较好看 不是系统默认的那样对于C# 更改窗体外观感觉并不那么轻松 更改窗体外观涉及到使用GDI+ 我所知道的有两种方法:有系统边框的窗体 处理窗体的Paint方法,在paint方法中 参数e.Graphics属性将返回一个对象 用来作画 但是这个画布的区域是窗体的客户区 所以无法修改到窗体的标题栏 边框等位置的。要更改标题栏只有获取整个窗口的句柄 这样创建的画布是整个窗体区域 但是对于我这样的初学者来说 对于句柄 windowsAPI还很不熟悉 我相信大多数的初学者或者学生都和我有相同的困惑 所以我使用了第二种办法 无边 阅读全文

posted @ 2010-12-03 21:30 狐狸狡猾不 阅读(30591) 评论(7) 推荐(9) 编辑

C#对 Windows 窗体控件进行线程安全调用 摘自MSDN
摘要:在调试器中运行应用程序时,如果一个不是创建某个控件的线程的其他线程调用该控件,则调试器会引发一个 InvalidOperationException,并显示以下消息:“从不是创建控件控件名称 的线程访问它。” 在未使用 Invoke 方法的情况下,从不是创建某个控件的线程的其他线程调用该控件是不安全的。 以下非线程安全的调用的示例。 代码Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--privatevoidsetTextUnsafeBtn_Clic 阅读全文

posted @ 2010-12-03 16:22 狐狸狡猾不 阅读(1315) 评论(0) 推荐(2) 编辑

导航



Powered by: 博客园 copyright © 2009-2012 狐狸狡猾不