在项目中需要将datagrid这个控件转化成图像输出,思考了几种办法:
1.可以对屏幕截取,然后再根据控件相对于屏幕的坐标再次截取,即可取得控件截图。这种方法限制性很大,如图像的分辨率被限死,同时,如果控件不在屏幕中显示的话那么就无法进行截图。
2.查看datagrid源码,重新绘制图形。这个办法只要掌握,其实一劳永逸。只不过需要时间过长,略显复杂,项目中需要一种简洁的方法来操作。
3.有自带方法绘制控件。经过查阅资料,整理代码如下
1 | /// <summary> |
在项目中需要将datagrid这个控件转化成图像输出,思考了几种办法:
1.可以对屏幕截取,然后再根据控件相对于屏幕的坐标再次截取,即可取得控件截图。这种方法限制性很大,如图像的分辨率被限死,同时,如果控件不在屏幕中显示的话那么就无法进行截图。
2.查看datagrid源码,重新绘制图形。这个办法只要掌握,其实一劳永逸。只不过需要时间过长,略显复杂,项目中需要一种简洁的方法来操作。
3.有自带方法绘制控件。经过查阅资料,整理代码如下
1 | /// <summary> |
约瑟夫环是一个数学的应用问题:已知n个人(以编号1,2,3…n分别表示)围坐在一张圆桌周围。从编号为k的人开始报数,数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又出列;依此规律重复下去,直到圆桌周围的人全部出列。
例如:
n = 9, k = 1, m = 5
【解答】
出局人的顺序为5, 1, 7, 4, 3, 6, 9, 2, 8。
关于C#窗体间的数据传值的方法好几种,在项目中都各有应用,虽然简单,这里记录下来,分享给大家!
主窗体
1 | private void button_Click(object sender, System.EventArgs e) |
子窗体(Form2)
Aspx中使用cs中的函数及成员时需要注意该函数类型为protected或者public
Asp.net的服务端控件和客户端控件ID不见得一样。服务端控件在内网环境和后台环境下使用是很方便的。而HTML控件用于前台。物尽其用。
获取客户端控件ID方法: 服务端id.ClientID
document.getElementById(‘<%=TextBox1.ClientID%>’)
JQuery同理。
Aspx中asp标签的控件的css样式:CssClass=”…”,等同于HTML中class属性。也可以单独修改控件样式,但不建议这样做。会生成大量冗余代码。
控件的Attributes用于设置控件的额外属性。
Label渲染成Span,若设置了AssociateControlID属性,就渲染成label,且for属性为关联的控件id。
Literal不做任何渲染,就是文本。将其mode属性设置为encode后,可以自动对文本进行编码,防止xss漏洞。
TextBox控件的AutoPostBack属性为true时,当该控件失去焦点,就自动Post。ASP.net中要提交表单时最好使用_doPostBack()方法。
RadioButton渲染为 input type=”radio”, 通过GroupName进行分组。
Button等控件可以通过Command以及CommandName,CommandArgument来统一处理。
Panel是容器,如果GroupingText的属性设置了,就渲染成有filedset的div,否则直接为div
HyperLink,能将虚拟路径转化为客户端路径。
FileUpload控件使用说明:需要增加上传文件的类型及权限。防止恶意攻击。
Jquery使用注意:$(“#<%=TextBox1.ClientID%>”).val() 只有<%%>里的是服务端代码。
控件的display:none和visibility:hidden都能实现隐藏,区别是:display:none不占空间
页面中的IsValid属性用来判断所有验证控件是否验证完成
控件的CausesVilidation属性为false则该控件不能被验证控件验证。
Get通过url显式传递参数,参数传递长度有限
Post隐式传递,可以传递数据量较大的数据
表单只可提交有name 的input 、select、textarea的value。对于不能提交value的,例如div。可以用hidden类型的input代替传送。这就是ASP.NET的viewstate机制的由来。
大量的数据不能存储在hidden或者viewstate中,会增加上传流量,导致网页速度变慢。同时表单中不能存储机密数据,会造成数据欺骗。
后台变量不能保存B端的值,对此引用session机制与cookie。Session是B端用户相关信息与S端内存的对应关系。Cookie将这些信息数据保存在本地。Session中不能存储过大的数据,并且超过一段时间会自动清除。例如在线编辑文章,编辑时间过长导致提交时出现文章提交失败,超时或者丢失。优化网页案例:网站主站域名与音乐站,图像站等大流量子站域名区分开,防止cookie的大量提交更新。
每一个请求都会new一个实现了IHttpHandler接口的类的实例进行处理,用完后就GC,不会保留。
JS作为客户端校验能方便用户,但js被禁用后会引起不必要的麻烦,所以数据限制等功能还要在服务端做处理。
asp:Button标签中 OnClientClick为客户端点击事件,onclick是服务端点击事件。
VirtrualPathUtility虚拟路径方法:
ToAbsolute(“/ex.aspx”) 将虚拟路径/ex.aspx转换为绝对路径
AppendTrailingSlash(“”) 判断虚拟路径最后是否有/,如果没有就加上
Combine(“”,””) 合并两路径,需要注意路径一的末尾如果没有/就找到最后一个/处进行合并,例如Combine(“/a/b”,”c.html”)合并为/a/c.html
注: 本文部分引用自Kaavield 的空间,由于Kaavield 的帮助然我领证少走了很多弯路,不过Kaavield 的指南出点小问题,我这里补全。
(1) 网络报名
密切关注甘肃省人事编制信息网的通知,一般上半年在3月左右报名,下半年9月左右。看到通知后根据通知的时间,网址进行在线报名。往年报名网址是在甘肃人事网上报名系统中,但是2011年上半年转移到了中国计算机技术职业资格网。不知道以后会不会还有变化,因为甘肃好像就没有什么正规的 软考办公室,所有职称考试都在职改办处理。对此不想再发表意见。 网上报名需要网银支持,费用由以前的80涨到了100,再有100涨到了140……恩,肉价菜价涨了,这个也涨,很好……
(2) 网下报名
最近学习《大话设计模式》,在学习的过程中又加深了对OO的理解,诸如abstract和virtual的区别之类的问题有了清晰的认识。今天通过装饰模式,重温OO的继承,巩固子类于父类的构造函数调用,子类调用父类方法等问题。
先看一段代码:
1 | class Person |
然后我们在主函数中实例化子类Man
1 | Man jack = new Man(); |
Assembly即程序集是一个由类型定义、数据文件和资源文件组成的逻辑集合。每个程序集都包含一个程序集清单,该清单通常被附加在某个头文件上,也可以设置单独建立一个文件来包含该清单。
在编译程序集中间代码之前,CLR需要找到合适的程序集中间代码,其加载机制分为主动加载方式与通过名称、版本、文化和公钥来加载程序集。
程序集的加载可以完全忽略任何策略,由程序员在程序中显式的通过位置加载。System.Reflection.Assembly.LoadFrom提供了这个功能。此方法通过接收一个codebase风格的字符串,用以确定所要加载程序集的位置:
1 | String codebase = @"../../../example/Compile/Compile.dll"; |
CTS、CLS和CLR是.Net框架的基本概念,但往往成为程序员忽视的部分。
CLR即Common Language Runtime, 可以把CLR理解为一个包含运行.Net程序的引擎和一些符合公共语言基础结构的类库的集合。它是一个规范的CLI实现。所谓的.Net框架一般就是指公共语言运行库。
CLI公共语言基础,是微软向ECMA提交的一份语言和数据格式规范(包括了CTS,中间语言CIL、底部文件格式和元数据格式等),它是目前为止,唯一一个公共语言基础的实现版本。
CTS的全称为Common Type System 通用类型系统。定义了一个能够在CLR上运行的语言规范,需要注意的是,尽管很多语言本省不符合CTS规范,但通过加强编译器,改变语言附加规范等手段,使得许多语言能够编写出在CLR上运行的程序,比如C++
CLS公共语言规范是CTS的一个子集,它定义了希望编写在.Net平台上运行的程序的语言所需符合的最小的规范。因为.Net允许由不同语言编写的程序一起运行,所以制定出CLS规范。
学校开了J2EE的选修,老师讲课的起点有点高,对于我们没有什么web认识的学生来说,一开始就讲jsp,实在是听的人雨里雾里。琢磨了一下午的tomcat,还是不能正常启动。没办法,尝试了一下glassfish。
先是在oracle的网站down了最新的java ee sdk,里面就带了glassfish,安装的时候做了一些基本的配置。启动startserv后打开 127.0.0.1:8080,显示如下,证明服务已启动。不过手动启动觉得有点麻烦,eclipse能整合到glassfish就方便多了,于是查找了一些方法。
我使用的eclipse是Eclipse IDE for Java EE Developers,下载地址:http://www.eclipse.org/downloads/
打开eclipse—windows—preferences—server—-runtime environments,然后点add,出现以下界面