随笔分类 - .NET
摘要:原文地址一.什么是Asp.Net页面生命周期当我们在浏览器地址栏中输入网址,回车查看页面时,这时会向服务器端(IIS)发送一个request请求,服务器就会判断发送过来的请求页面, 完全识别 HTTP 页面处理程序类后,ASP.NET 运行时将调用处理程序的 ProcessRequest 方法来处理请求,来创建页面对象。通常情况下,无需更改此方法的实现,因为它是由 Page 类提供的。接下来被创建页面对象的ProcessRequest方法使页面经历了各个阶段:初始化、加载视图状态信息和回发数据、加载页面的用户代码以及执行回发服务器端事件。之后,页面进入显示模式:收集更新的视图状态,生成 HTM
阅读全文
摘要:由于最近项目需要用到类似google的搜索提示,在网上找了一些资料,现将具体实现方法记录:主要使用的是textbox的AutoCompleteMode属性。注意:AutoCompleteMode有Append,None,Suggest,SuggestAppend四种属性:Append就是把第一个相似的项追加到你输入字符的后面None就是不做任何提示Suggest就是把相似的项用列表的方法显示在下面SuggestAppend就是把第一个相似的项加到你输入字符的后面并在下面用列表显示所有相似的项AutoCompleteCustomSource属性的使用是可选的,但必须将 AutoCompleteS
阅读全文
摘要:代码设置DataGridView列表头居中:DataGridViewCellStyle style = new DataGridViewCellStyle(); style.Alignment = DataGridViewContentAlignment.MiddleCenter; _datagridview.ColumnHeadersDefaultCellStyle = style;winform 里面让控件获得焦点:1.在窗体的Paint事件 里写 Focus() private void panel1_Paint(object sender, ...
阅读全文
摘要:前面我们介绍了简单工厂模式和工厂方法模式,现在简单的回顾一下:简单工厂模式是充分利用面向对象的三大特性,将操作要素和操作方法对象化,通过定义工厂方法,决定实例化哪个对象。但简单工厂模式不利于程序的扩展,在需要扩展的时候需要将整个工程类开放,不符合开放-封闭原则。在简单工厂模式的基础上,我们通过继承接口实现个操作对象的实例化,各具体操作类各自实现相应的方法,只需实现工厂类接口方法即可,在对功能进行扩展时,不需要对工厂类接口进行修改,只需新增操作类和实例化自己的工厂类即可。那我们为什么需要抽象工厂模式呢?当我们项目的数据库需要从sqlserver改成oracle时,当初用抽象工厂模式设计的优点就体
阅读全文
摘要:前一篇文章介绍了简单工厂模式以及如何使用简单工厂模式来实现计算器。但是简单工厂模式有个问题,就是当我们需要扩展运算操作的时候,我们需要修改整个运算工厂类,或者说整个运算工厂类都必须开发才能允许操作扩展,这违背了开发-封闭原则,这是我们就需要工厂方法模式了。也就是说工厂方法模式必须定义一个用于创建对象的接口,让子类决定实例化哪个对象。也就是说,工厂方法模式把简单工厂模式的内部逻辑判断移到了客户端来判断,由客户端决定来实例化哪个对象。以实现计算器为例,对运算操作功能进行扩展时,我们不再需要在运算工厂类中新增case判断,只需要新增一个相应功能的运算类和工厂类即可。1 /// <summar.
阅读全文
摘要:在介绍简单工厂模式之间,我们首先得清楚面向对象的三大特性:封装、继承、多态。封装:每个对象都包括自己进行操作所需要的所有信息,而不依赖于其他对象来完成自己的操作。这样的方法和属性通过类的实例来实现。通过良好的封装可以降低耦合度;类的内部可以自由修改;类具有对外的清晰接口。继承:通过对对象进行抽象父类,子类实现父类功能并可扩展。 1.子类拥有父类非private的属性和功能(父类的构造函数例外,可以用base关键字访问,base代表着父类); 2.子类具有自己的属性和功能,即子类可以扩展父类没有的属性和功能; 3.子类可以以自己的方式重写父类的功能。 缺点:父类变,子类不得不变,父子是一种强耦合
阅读全文
摘要:前一篇文章介绍了什么是单例模式以及如何使用单例模式。那么在多线程程序中我们如何使用单例模式呢?也就是说在多线程中我们如何保证类实例的唯一性?众所周知,多线程中使用较多的是锁lock。lock是确保一个线程位于代码的临界区时,另一个线程不进入临界区。如果其他的线程试图进入锁定的代码,将一直等待(被阻止)直到该对象被释放。程序运行时创建一个静态只读的线程辅助对象:public static readonly object syncroot=new object();在同一时刻加锁的那部分代码只能被一个线程访问:lock(syncroot){if(instance==null){ instance.
阅读全文
摘要:由于最近工作需要用到单实例模式,虽然以前对单实例模式有些了解,但却没有实际应用过,看了也就忘记了。再次熟悉一下:有时候,我们需要在程序运行整个过程中,为了效率问题或者用户体验,要求只产生对象的一个实例,这时候我们就需要用到单实例模式。例如:我们想在弹出对话框窗口时,不论用户触发多少次事件,当窗口存在时,只弹出一次。1:将弹出窗口Form1作为全局变量声明:Form1 frm1;在触发弹出窗口事件时判断Form1是否实例化,如果没有,实例化窗口弹出:if(frm1==null){ frm1=new Form(); frm1.show();}但这时还是有问题,当我们关闭窗口后,再点击却不能在弹..
阅读全文
摘要:由于最近项目需要在winform中有播放视频文件功能,相继在网上找了些资料,现在总结一下:需要播放视频文件,有四种实现方式:一、使用vs自带的windows media play控件优点:上手容易,使用简单;缺点:界面固定,支持格式有限。二、使用微软的DirectX播放优点:可以自定义界面,支持的播放格式增多;缺点:播放视频的时候必须另外安装解码器。三、使用libvlc播放优点:可以自己封装libvlc.dll(开源程序有牛人已经封装,可以直接拿来用),支持的格式增多;缺点:对支持的播放格式,需要添加对应的插件dll文件,所以dll有大概50M。四、使用DirectShow播放优点:开源程序,
阅读全文
浙公网安备 33010602011771号