一切福田,不離方寸,從心而覓,感無不通。

Category Archives: Programming Language

浅析WPF与Silverlight的关键区别

本文将讨论的是WPF与Silverlight的关键区别,希望本文能对大家更好的了解这两者有所帮助。 Silverlight刚诞生时,很多人只是简单的理解它为Flash的竞争对手。但是随着微软的进一步工作,Silverlight的应用范围越来越广泛,甚至很多人将它与WPF混为一谈。本文将为大家细细道来。   当WPF和Silverlight越来越受到.NET开发人员重视的时候,两者间的界限也越来越模糊。回顾六月,Wintellect发布了鲜为人知但极其重要的“微软WPF和Silverlight之异同白皮书”。我们建议GUI开发人员要通读全部69页,我们会列出主要的观点及其对相关业务范围开发人员的影响。   依赖关系属性是两个平台的重要组成部分,使用PropertyMetadata可代替普通字段来保存属性。Silverlight仅提供了该类,而WPF却有若干子类型可用。   UIPropertyMetadata添加了一个标识符,用于决定“在使用了元数据实例的地方,是否应该禁播依赖关系属性的动画”   FrameworkPropertyMetadata添加一个标识符来指示影响管道的那些属性,包括控制管理、测量和呈现。它也可用于指示属性是否允许数据绑定以及默认的类型。由于Silverlight不支持该类,因此所有的数据绑定在默认情况下都是单向的。   Silverlight不支持隧道事件。两个平台都支持Direct事件和Bubbling事件。   WPF支持多种类型的触发器。一个简单的触发器附加到依赖关系属性后,当触发器条件满足的时候便会自动修改样式。除了简单触发器以外,WPF也支持可响应路由事件或使用数据绑定的触发器。   Silverlight使用视觉状态管理器代替触发器。WPF当前并不提供该技术,但会在WPF 4.0中添加。   Silverlight仅支持若干标记扩展。除了通用的StaticResource、Binding和TemplateBinding扩展以外,WPF还添加了DynamicResource、RelativeSource、x:Type、x:Static和x:Array。   有很多键盘和鼠标事件仅在WPF中可用。由于为数众多的关系,我们稍后会列出完整列表。   关于UIElement类和IInputElement接口。当某个控件被禁用的时候,WPF使用它们来禁用所有的子控件。Silverlight不提供这种功能,所以开发人员不得不手动遍历控件树。   在通信方面,Silverlight仅限于BasicHttpBinding和PollingDuplexHttpBinding。当然,WPF支持所有的绑定。   最后,打印功能在两者之间也完全不同。WPF可直接打印可视化树而Silverlight则依赖浏览器实现。

龙生   11 Sep 2011
View Details

文件管理系统

一、准备知识点: 1.对文件操作,先引用两个命名空间:using System.IO;(操作文件)、using Sysetem.Text;(操作文本) 2.创建文本文件:(1)创建文件名和文件内容(相当于新建文本文档)(2)创建StreamWriter对象,创建一个某某格式的文件(3)将内容写入数据流WriteLine (4)关闭StreamWrite对象.Close() 方法一:直接创建一个StreamWriter对象 string filename = TextBox1.Text string filecontent= TextBox2.Text StreamWriter sw =File.CreatText(Server.MapPath("~/txt/"+ filename +".txt")); sw.WriteLine(filecontent); sw.Close(); Response.Write("<script>alert('已经成功新建了一个’+ filename +'.txt,并添加了数据')</script>") 方法二:在创建StreamWriter对象之前先创建一个FileStream(文件流)对象,并在最后关闭它。 string filename = TextBox1.Text string filecontent= TextBox2.Text FileStream fs = new FileStream(Server.MapPath("~/txt/"+ filename + ".txt")),FileMode.Create,FileAccess.Write);  //文件流fs的路径、文件打开方式:创建和写操作 StreamWriter sw = new StreamWriter(fs,Encoding.Default);   //文件流fs和浏览器默认编码类型 sw.WriteLine(filecontent); sw.Close(); fs.Close(); Response.Write("<script>alert('成功新建了一个’+ filename +'.txt,并添加了数据')</script>")   3.读取文本文本: 方法一:直接使用File.ReadAllText(文件路径,编码方式) TextBox1.Text=File.ReadAllText(Server.MapPath("~/txt/**.txt"),Encoding.Default); 方法二:使用StreamReader对象以File.OpenText(文件路径)读取文件数据以及使用StreamBuilder对象的Append属性来添加读取文件的数据(UTF-8规范读取的数据) StreamReader sr = File.OpenText(Server.MapPath("~/txt/**.txt")); StreamBuilder sb = new StreamBuilder(); while(!sr.EndOfStream)               //如果数据不到最后一行,继续添加(循环语句) { sb.Append(sr.ReadLine() +"<br>");} sr.Close(); 方法三:使用StreamBuilder对象的Append属性添加从StreamReader对象那里读取的数据流,与前一种方法不同的是,这次用到了FileStream的File.Open方法取代了File.OpenText(文件路径)的方法(GB2312规范读取数据) StreamBuilder sb = new StreamBuilder(); FileStream fs = File.Open(Server.MapPath("~/txt/**.txt"),FileMode.Open,FileAccess.Read); StreamReader sr = new StreamReader(fs,Encoding.Default); […]

龙生   05 Jul 2011
View Details

解决了防止用户重复登陆和session超时

一.设置web.config相关选项先启用窗体身份验证和默认登陆页,如下。

  设置网站可以匿名访问,如下

  然后设置跟目录下的admin目录拒绝匿名登陆,如下。注意这个小节在System.Web小节下面。

  把http请求和发送的编码设置成GB2312,否则在取查询字符串的时候会有问题,如下。

  设置session超时时间为1分钟,并启用cookieless,如下。

  为了启用页面跟踪,我们先启用每一页的trace,以便我们方便的调试,如下。

          二.设置Global.asax文件 处理Application_Start方法,实例化一个哈希表,然后保存在Cache里

    在Session_End方法里调用LogoutCache()方法,方法源码如下

          三.设置相关的登陆和注销代码       登陆前调用PreventRepeatLogin()方法,这个方法可以防止用户重复登陆,如果上次用户登陆超时大于1分钟,也就是关闭了所有admin目录下的页面达到60秒以上,就认为上次登陆的用户超时,你就可以登陆了,如果不超过60秒,就会生成一个自定义异常。在Cache["online"]里保存了一个哈西表,哈西表的key是当前登陆用户的SessionID,而Value是一个ArrayList,这个ArrayList有两个元素,第一个是用户登陆的名字第二个元素是用户登陆的时间,然后在每个admin目录下的页刷新页面的时候会更新当前登陆用户的登陆时间,而只admin目录下有一个页打开着,即使不手工向服务器发送请求,也会自动发送一个请求更新登陆时间,下面我在页面基类里写了一个函数来做到这一点,其实这会增加服务器的负担,但在一定情况下也是一个可行的办法.

  用户注销的时候调用上面提到LogoutCache()方法           四.设置admin目录下的的所有页面的基类

            五.写一个自定义异常类首先要在跟目录下写一个错误显示页面ShowErr.aspx,这个页面根据传递过来的查询字符串msg的值,在一个Label上显示错误信息。

转自:http://www.cnblogs.com/hcbin/archive/2010/04/02/1702885.html

龙生   02 Jul 2011
View Details

Jmail邮件发送简单示例

 set msg = server.createobject("jmail.message")  msg.logging = true msg.charset = "gb2312" msg.from = "webmaster@w3cnet.com" msg.fromname = "标准网络"  msg.addrecipient "w3cnet@qq.com"  msg.subject = "会员验证" msg.htmlbody = "<span style=’color:red;'>LED</span>" 'msg.body = "this is html content" msg.addattachment("D:\ximancolor\Jmail\baidu.gif") msg.send("127.0.0.1")

龙生   01 Jul 2011
View Details

C# TextBox常用方法总结

我们在使用C# TextBox进行开发操作的时候经常会碰到C# TextBox的使用,那么C# TextBox的使用有没有一些常用的技巧呢?如C# TextBox换行的处理,其实就是一些常用的操作,那么这里就向你介绍几个我们常见的需求以及解决方法。 一、关于C# TextBox全选的判断: int SelectLength=this.textBox1.SelectionLength;//获取选中的字符长度     if (SelectLength == this.textBox1.Text.Length) {//判断是否全部选中     MessageBox.Show("你已经选中");     }   二、关于C# TextBox换行、设置光标位置、随文本滚动 ◆C# TextBox换行 TextBoxControl.Text += Environment.NewLine;  如何在多行TextBox中写入文本时实现换行?由于Windows系统中,回车符需两上字符。因此方法是使用\r\n标记,如 Label="Calculation " ":…….SUM\r\n";   textBox.AppendText(Label);  另外更有一个办法是用Environment.Newline的方法,能够兼容Windows和Linux系统。 ◆C# TextBox设置光标位置到文本最后 TextBoxControl.SelectionStart = TextBoxControl.TextLength;  ◆C# TextBox随文本滚动 TextBoxControl.ScrollToCaret();   如何在多行TextBox中用滚动条,使添加文本后自动滚动显示到最后一行?方法是使用ScrollToCaret方法,自动滚动到插入符的位置,如: textBox.AppendText(Label);   textBox.ScrollToCaret();   那么对于C# TextBox常用操作的内容就向你介绍到这里,希望对你了解和学习C# TextBox的使用有所帮助。 转自:http://blog.sina.com.cn/s/blog_43eb83b90100l18v.html

龙生   25 Jun 2011
View Details

为 FCKeditor 增加删除文件和文件夹的功能(C#)

FCKeditor 很强大也很讨人喜欢,唯一的缺点就是不支持文件和文件夹的删除,很是遗憾。这篇文章就介绍怎样为 FCKeditor 增加删除功能(基于 C# 的版本)。 FCKeditor 官方网站:http://www.fckeditor.net本文所针对版本:FCKeditor: 2.6.4,FCKeditor.Net: 2.6.3。 1. 用 Visual Studio 2005/2008 打开项目 FCKeditor.Net 2.6.3,打开文件“FileBrowser/Connector.cs”,为 class Connector 增加如下两个成员函数:

2. 在文件“Connector.cs”中找到 OnLoad 函数,在 switch 部分增加以下红色代码:

3. 编译 FCKeditor.net 并关闭该项目。将生成的 FredCK.FCKeditorV2.dll 拷贝出来以备后用。 4. 建立 C# 测试项目,并在其中部署 FCKeditor 2.6.4(使用第 3 步生成的 FredCK.FCKeditorV2.dll)。精简及部署的详细步骤非本文重点,不再重复。 5. 打开“fckeditor/editor/filemanager/browser/default/frmresourceslist.htm”,修改以下两个函数

6. 继续修改文件“frmresourceslist.htm”,在 OpenFile 函数后面增加以下两个函数:

7. 继续修改文件“frmresourceslist.htm”,找到 GetFoldersAndFilesCallBack 函数中的下面这行,增加红色部分的代码:

至此,删除功能增加完毕,见下图:   转自:http://blog.sina.com.cn/s/blog_4dfeeb6f0100ed5j.html

龙生   17 Jun 2011
View Details

C# UDP通信示例

大家好,这是我最近写了一个Udp通信的小程序,发表出来和大家共同学习,我希望和大家共同进步。 upd通信接受端:

udp通信的发送端:

辅助类:

    转自:http://www.cnblogs.com/zhaotianyu001/articles/549259.html

龙生   04 Jun 2011
View Details

C#UDP通信 | C#UDP广播

Internet协议族中有支持无连接的传输协议,即UDP协议。UDP协议提供了一种方法来发送经过封装的IP数据报,而且不必建立连接就 可以发送这些IP数据报。 服务器端:

    客户端:

    MSDN 实例

Microsoft Visual Studio 2005/.NET Framework 2.0 同时提供下列产品的其他版本: •.NET Framework 3.0 •Microsoft Visual Studio 2008/.NET Framework 3.5 .NET Framework 类库UdpClient 成员 提供用户数据报 (UDP) 网络服务。 下表列出了由 UdpClient 类型公开的成员。 公共构造函数 名称  说明 UdpClient  已重载。初始化 UdpClient 类的新实例。 公共属性 (请参见 受保护的属性 )   名称  说明 Available  获取从网络接收的可读取的数据量。 Client  获取或设置基础网络 Socket。 DontFragment  获取或设置 Boolean 值,指定 UdpClient 是否允许对 Internet 协议 (IP) 数据报进行分段。 EnableBroadcast  获取或设置 Boolean 值,指定 UdpClient 是否可以发送或接收广播数据包。 ExclusiveAddressUse  获取或设置 Boolean 值,指定 UdpClient 是否只允许一个客户端使用端口。 MulticastLoopback  获取或设置 Boolean 值,指定是否将输出多路广播数据包传递给发送应用程序。 Ttl  获取或设置一个值,指定由 UdpClient 发送的 Internet […]

龙生   04 Jun 2011
View Details

php字符串处理函数

addcslashes —— 为字符串里面的部分字符添加反斜线转义字符 addslashes —— 用指定的方式对字符串里面的字符进行转义 bin2hex —— 将二进制数据转换成十六进制表示 chr —— 返回一个字符的ASCII码 chunk_split —— 按一定的字符长度将字符串分割成小块 convert_cyr_string —— 将斯拉夫语字符转换为别的字符 convert_uudecode —— 解密一个字符串 convert_uuencode —— 加密一个字符串 count_chars —— 返回一个字符串里面的字符使用信息 crc32 —— 计算一个字符串的crc32多项式 crypt —— 单向散列加密函数 explode —— 将一个字符串用分割符转变为一数组形式 fprintf —— 按照要求对数据进行返回,并直接写入文档流 get_html_translation_table —— 返回可以转换的HTML实体 html_entity_decode —— htmlentities ()函数的反函数,将HTML实体转换为字符 htmlentities —— 将字符串中一些字符转换为HTML实体 htmlspecialchars_decode —— htmlspecialchars()函数的反函数,将HTML实体转换为字符 htmlspecialchars —— 将字符串中一些字符转换为HTML实体 implode —— 将数组用特定的分割符转变为字符串 join —— 将数组转变为字符串,implode()函数的别名 levenshtein —— 计算两个词的差别大小 localeconv —— 获取数字相关的格式定义 ltrim —— 去除字符串左侧的空白或者指定的字符 md5_file —— 将一个文件进行MD5算法加密 md5 —— 将一个字符串进行MD5算法加密 metaphone —— 判断一个字符串的发音规则 money_format —— 按照参数对数字进行格式化的输出 nl_langinfo —— 查询语言和本地信息 nl2br —— 将字符串中的换行符“\n”替换成“” […]

龙生   26 May 2011
View Details

在winform中嵌入 flash

很多光盘上的程序,比如电脑迷光盘,开头总有一段动画,用来展现企业品牌和LOGO之用。这个动画是Flash做的,而且嵌入到程序中简直做到无缝融合,因为右键点击它也不会有那特有而烦人的Flash右键菜单。 因此将Flash融合到WinForm中能够增强程序的多媒体效果和炫丽的外观。现在我们就来看看在C#桌面程序中如何插入Flash视频,而且去掉烦人的右键菜单。   首先要插入Flash就必须使用Flash控件,在工具栏右键选择“选择项…”,然后在“COM组件”面板下点击“浏览”按钮,在本机电脑C:\WINDOWS\system32\Macromed\Flash\目录里选择Flash8.ocx(也有可能是Flash9F.ocx,版本不同所致),然后点击确定就可以了。但到这里还没有完,因为要使用Flash控件必须注册它。 在CMD里面输入如下: regsvr32 C:\WINDOWS\system32\Macromed\Flash\Flash8.ocx 系统会提示注册成功,这个时侯就可以在VS2008里面使用该控件了! 打开VS2008,新建一个Windows程序,然后把刚才我们选择的Flash控件Shockwave Flash Object拖到窗体中,这时窗体中会出现一个白色的矩形框,Name属性我们设置为Myflash,在里面可以播放我们需要的swf文件。   注意到该控件主要有几个属性: Name属性,这个是所有对象都会有的。 Menu属性,这个是Flash菜单项,默认值为true,也就是右键的时候会出现完整的Flash菜单,如果设置为False,则只出现最简的菜单(设置与关于)。 Move属性,这个属性是用来指定要播放的Flash文件的。 Playing属性,指定是否装在影片之后马上播放。 Quality属性,设置影片的质量。 Scalemode属性,设置影片的缩放模式。 Visible属性,设置影片控件的可视与否。   接下来我们在窗体中放置一个按钮,Text属性设置为LoadSwf。双击添加事件代码如下: OpenFileDialog ofd = new OpenFileDialog(); ofd.Filter = "Flash文件|*.swf"; DialogResult dr = ofd.ShowDialog(); if (dr == DialogResult.OK) {                   Myflash.Movie = ofd.FileName;     Myflash.Play(); }    这样当程序运行的时候点击按钮会要我们选择一个SWF文件,选择好后确定就自动播放了! 当然,我们还可以添加一些按钮,分别为Play,Pause Play按钮的播放功能如下: This.Myflash.Play(); Pause按钮的暂停功能如下: This.Myflash.StopPlay();   这里就不再啰嗦了,各位园友可以自行去研究一些常用的功能。下面我们主要来讲解如何消去烦人的Flash右键菜单! 消去Flash右键菜单有两种方法(本人愚笨,到目前只发现这两种):   方法一: 这个方法比较复杂,也比较繁琐,主要是用到API函数的调用。代码如下:   #region 去掉Flash右键菜单,API函数的声明         private const int GWL_WNDPROC = -4;         public delegate IntPtr FlaWndProc(IntPtr hWnd, int msg, IntPtr wParam, IntPtr lParam);                private IntPtr OldWndProc = IntPtr.Zero;         private […]

龙生   21 May 2011
View Details
1 169 170 171 174