
C#
Dogfish
Fake Coldfusion Expert.
展开
-
C#使用反射Reflection实现动态字段排序
简单点,就那个例子来说明。using System;using System.Linq;using System.Collections.Generic;public class Program{ public static void Main() { //要排序的字段 var dynamicFieldName = "Last"; //获取字段的属性 var dynamicProp = typeof(Student).GetProperty(dy.原创 2020-10-29 08:30:23 · 852 阅读 · 0 评论 -
C#里,调用WinForm时,最好使用using
在编写一个winform程序时,有一个小窗口打开频繁, 导致程序在运行一段时间后,变得很慢。我不是很确定是这个小窗口造成的, 但是,在相关的地方加上using后,问题明显减少。原来的代码:frm a = new frm();a.Show();修改后的代码:using(frm a=new frm()){ a.Show();} 例子只原创 2011-11-20 01:28:00 · 2372 阅读 · 0 评论 -
在C#函数的参数使用valuetype
今天要写一个函数,要处理不同的数据类型,如int,float等。但是又不想overload多个函数。所以找了一些资料,把valuetype找出来。 我自己平时的写法。public void func(ref string a, int i){ a = i.toString();}public void func(ref string a, float i)原创 2011-11-19 13:52:59 · 3375 阅读 · 0 评论 -
C#的DataGridView在某一行附近插入一行。
有时候,要 DataGridView里插入一行。不是在最后插入,而是在中间的某一行的前或后插入。这里要使用到DataGridView里的Insert。例如:在第一行前插入。'0是第一行的indexDataGridView1.Rows.Insert(0, New DataGridViewRow());在第一行的后面插入。'0是第一行的indexDataGridVi原创 2011-11-22 13:48:04 · 24693 阅读 · 1 评论 -
在C#, DataGridView把某行设定为CurrentRow
以下代码是可以把DataGridView的任意一行设置为CurrentRow, 在VS2010运行通过。 //假设dgv是一个DataGridView, 我要把第三行设置为当前行。//index是有0开始的。//这里只是把那行highlight。可有可没dgv.Rows[2].Selected = true;//这是主要的地方。这行后,CurrentRow就是第三行了。dgv.C原创 2011-11-23 07:38:38 · 14150 阅读 · 0 评论 -
C#里,如何模拟DataGridView里的一个Cell的Click事件。
一下代码是模拟如何点击DataGridView里的一个cell。 //假设dgv是一个DataGridView。//我要点击第3行的第二个cell。//当然,要有一个点击事件。假设dgv_CellClick是那个点击事件。dgv_CellClick(dgv, new DataGridViewCellEventArgs(1, 2))//重要的是在DataGridViewCellEve原创 2011-11-23 07:55:17 · 7091 阅读 · 0 评论 -
自己写的一个isNumeric。
自己在程序里用到的一个isNumeric函数。 为什么要记录下来? 因为看到有朋友使用int来处理。导致程序出现很难找的错误。 public static bool isNumeric(string s){ decimal i; return decimal.TryParse(s, out i);}原创 2011-11-29 03:18:10 · 1015 阅读 · 2 评论 -
在桌面程序里,使用Uri.EscapeDataString实现HttpUtility.UrlEncode
要把数据组合成为一个URL,然后去访问一个网站。想把URL里的参数转换成为安全的格式,以免以后有稀奇古怪的事情发生。如果在Web程序里,可以使用HttpUtility.UrlEncode。如果在桌面程序里,HttpUtility.UrlEncode的调用不是很方便,要在reference里加入一个System.Web才能正常使用。但是我的程序是升级版,这样做怕对程序发布有影响,所以要找另外的方原创 2011-12-01 02:25:57 · 5285 阅读 · 0 评论 -
使用Dictionary作为数据库应用的返回。
最近写了个客户端的小程序。每次拿得数据不是很大量(大约小于200行),所以,考虑把数据返回的记录转成Dictionary,然后传回来。Dictionary>在程序里, 我使用以上的格式,模拟数据库表的格式 Dictionary> ret = new Dictionary>();//这里省去链接。using(SqlDataReader dr = cmd.ExecuteRead原创 2011-11-24 01:46:13 · 1976 阅读 · 0 评论 -
TextBox的全选。
实现:当用tab按键进入时,全选当鼠标移到时全选。但是单击时不全选。private void SelectAll(object sender, EventArgs e){ TextBox obj = (TextBox)sender; if (!obj.Focused) obj.Focus(); obj.SelectAll();}调原创 2011-12-01 07:19:42 · 2341 阅读 · 0 评论 -
调用一个按钮的Click事件(利用反射)。
做了几次。每次都忘记。所以记录下来。测试环境如下:Windows 7Visual Studio 2010 //建立一个函数private void callOnClick(Button btn){ //建立一个类型 Type t = typeof(Button); //参数对象 object[] p = new object[1];原创 2011-12-07 04:01:16 · 8567 阅读 · 5 评论 -
C#修改程序的config
程序已经发布了,不能每个机器去修改一个设置,让部门的经理们去修改,还不如自己弄。所以,直接告诉他们,我要升级。然后通过升级程序修改属性。其实没有什么,就是修改那个XML文件。使用xml document的class来处理。 using System;using System.Collections.Generic;using System.Linq;using System.Te原创 2011-12-09 05:46:37 · 1680 阅读 · 2 评论 -
C#浏览器捕捉javascript的window.open
使用C#写Desktop程序来给自己的Coldfusion程序加上一个外壳。希望点击链接时,不要跳出自己的窗口。但是window.open的链接,在.NET自带的WebBrowser里是捕捉不到的。WebBrowser的NewWindow事件,好像只捕捉到来自的跳转。为了让NewWindow事件能捕捉到window.open,我override了javascript里的window.ope原创 2012-01-07 14:42:11 · 3012 阅读 · 1 评论 -
C#浏览器拿IFrame和Frame里的ActiveElement
当Activate Element在Iframe和Frame的时候,当然的页面给你的Active Element是Iframe或者Frame。以下代码就是拿出Iframe或Frame里的Active Element的。private void webbrowser_NewWindow(object sender, CancelEventArgs e){ WebBrowser w =原创 2012-01-10 06:22:37 · 2268 阅读 · 0 评论 -
C#字符串变为枚举的值
有时候只是拿到枚举的值的名字。如何由枚举的名字转换成需要的枚举的值呢?让我们以一个例子说明: public enum MyEnum { None = -1, Register = 1, Cancel = 2 }; 如果我只是拿到一个字符串“Register”,如何把它转成枚举的值呢原创 2015-02-09 07:38:24 · 1088 阅读 · 0 评论 -
C#里,把一个对象的属性转成XML
由于程序上的需要,我要把一个第三方的程序返回的对象的属性转成XML,以提供给另外一个程序使用。这个过程很简单,只是在出来null值的时候要特殊出来。有可能还好有其他的要主要的特殊值,但是,一下代码能很好符合我的要求。foreach (var Property in obj.GetType().GetProperties()){ xmlRoot.AppendChild(xmlDoc原创 2015-02-09 01:34:24 · 2598 阅读 · 0 评论 -
C#里把XML对象变成一个字串
如何把一个XML对象变成字串呢?开始的时候,我只是简单地使用xmlObj.toString()来写。这个当然不对,因为它返回的是一个对象的类的名字。后来,在Google找了一下,用一下代码实现了我的需求。private static string getXMLAsString(XmlDocument xmlDoc){ StringWriter swObj =原创 2015-02-09 01:43:02 · 768 阅读 · 0 评论 -
C#构造函数调用其他构造函数
其实就是使用this来实现的。看一下例子就会明白的了。 class Class1 { public Class1() { //Code 1 } public Class1(string s):this() { //Code 2 }原创 2011-11-19 08:11:33 · 20640 阅读 · 4 评论 -
C#里,在using语句里使用return。
今天早上写了些代码,其中有些代码是在using语句里使用了return语句。using语句使用起来是不错的。如我们所知道的,using语句在使用费托管资源时候很有用。如:数据库连接,文件处理等等。这些非托管资源都实现了IDisposable接口,意思是,当你使用它们的时候,用完了就要清理。 在执行完成后,using语句能保证帮你完成释放非托管资源。无论是你一直运行完整个流程,或者中途出错,翻译 2011-11-17 15:55:15 · 8485 阅读 · 0 评论 -
SqlConnection 在 Dispose 之前 要不要先 Close 呢?
SqlConnection 在 Dispose 之前 要不要先 Close 呢?我个人的习惯是会先叫 Close 再 叫 Dispose但 Dispose 真的不会先帮我 Close 吗?今天索性来反组译一下~.methodfamilyhidebysigvirtualinstancevoid Dispose(bool disposing) cil managed{.maxsta转载 2011-11-17 09:30:16 · 1356 阅读 · 0 评论 -
C#的isnumeric。
<br />C#是没有isnumeric这个函数的。但是它提供一些类似的功能。<br /> <br />在int,double等基本数据类型里,提供了TryParse函数。通过这个函数,能实现类似isnumeric的功能。<br /> <br />以下用int写一个例子。<br /> <br />int i;<br />string a="123";<br />if(int.TryParse(a, out i))<br />{<br /> //这里处理;如果是整数。现在i的值是123。<br />}原创 2011-05-28 02:06:00 · 7237 阅读 · 0 评论 -
C# MVC - 直接读取传入的参数。
其实很简单。只是记录下来给自己看看。string id = Html.ViewContext.RouteData.Values["id"]好像MVC没有检测这个id是否存在的。这个检测,要自己去处理。我自己的代码是int i;string id = Html.ViewContext.RouteData.Values["id"].ToString();if (int.TryParse(id,out i)){ //我检测id是否是整数,如果是,我就会显示一些数据。但是有可能造成冲突,这个要看自原创 2011-05-31 01:23:00 · 3779 阅读 · 0 评论 -
利用List来实现动态的数组。
C#里List很好用。其中一项就是动态数组。 如一下例子: public int[] abc(){ List num=new List(); //加一个内容 num.add(1); //再加一个内容 num.a原创 2011-07-30 13:55:46 · 976 阅读 · 0 评论 -
一个关于日期处理的类:Calendar。
这个类在System.Globalization里。里面包含了很多的关于日期处理的函数。如某月有多少天,某年有多少天等函数。例子:System.Globalization.Calendar mycal = System.Globalization.CultureInfo原创 2011-08-03 11:26:59 · 632 阅读 · 0 评论 -
List里find的使用。
List的find是在list里找到第一个符合条件的元素。返回的就是一个单个元素。一下的例子,是在list里找今天的weekday是否在list里。这里原来可以不使用list的,但是为了练习使用list来处理一些问题,所以使用了list提供的find功能。DateTi原创 2011-08-03 03:15:26 · 10779 阅读 · 3 评论 -
利用“反射”给类的属性赋值。
建立一个class,class里的属性来自一个xml。属性的名字和xml的节点的名字是一样的。为了不一个一个地判断,使用了反射来给每个属性赋值。 class myclass { //属性设置 public string profileid { get;原创 2011-07-28 14:15:11 · 4087 阅读 · 1 评论 -
C#使用XSD来验证XML。
我使用XmlReader来处理,因为觉得XmlReader简单点。 我自己做了个例子来说明,例子里的XML不是很复杂,没有子节点的。 XML 文件(a.xml): 0001 我的内容 6 trueXSD文件(a.xsd):http://www.w3.org/2001/原创 2011-07-28 13:57:02 · 8547 阅读 · 1 评论 -
Linq实例(一)
int[] nums = { 1, 2, 3, 4, 5, 6, 7 };var nums2 = from i in nums where i <= 3 select i;简单解释一下。1. 第一行,建立一个原创 2011-08-09 15:32:38 · 591 阅读 · 0 评论 -
linq实例(二)
int[] nums = { 1, 2, 3, 4, 5, 6, 7}; var nums2 = from i in nums where i < 3原创 2011-08-11 07:16:32 · 438 阅读 · 0 评论 -
在创建class实例时,给公共属性赋值。
/*测试的class。数据库操作。*/class db{ public int a { get; set; } public int c { get; set; } private const string connstr =@"Provid原创 2011-08-12 04:59:22 · 1156 阅读 · 0 评论 -
用序列化把Object变成字串。
这里是一个例子,如何把一个可以序列化的对象序列化生一个字串。using System;using System.IO;using System.Runtime.Serialization;using System.Runtime.Serialization.Formatte原创 2011-08-25 06:09:34 · 783 阅读 · 0 评论 -
linq实例 - Group的使用(三)
测试用的class。 public class user { private string firstName; private string lastName; public string FirstName原创 2011-08-26 07:27:11 · 971 阅读 · 0 评论 -
linq实例 - Join的使用(四)
测试的class。public class user { private string firstName; private string lastName; private int id; public原创 2011-08-27 03:33:49 · 841 阅读 · 0 评论 -
一个自己写得字串的类型转换
主要用于把字符串转换成为其他的类型。如:int,double等 public Object myParse(string v, Object defaultvalue) { Object ret = defaultvalue; MethodInfo m = defaultvalue.GetType().GetMethod("Parse", new原创 2011-10-22 15:00:04 · 739 阅读 · 0 评论 -
现象:LoadXml载入Xhtml文件速度很慢
如果有如下的Xhtml文字,在.Net中用XmlDocument.LoadXml载入的时候,速度很慢。Hello. 简单解决:不解析外部资源 这个xml文本和一般xml文本的差别是多了一个Doctype说明,指定了一个DTD文件。根据.Net文档中关于XmlDocument.LoadXml的说明,是不会进行DTD或者Schema的验证的,所以并不是验转载 2011-10-22 15:11:03 · 2379 阅读 · 0 评论 -
为C# Window Form程序设置热键。
在网上查,有好几种方法。我选择了override ProcessCmdKey的方法。 以下代码我是测试过的。放在Window Form的class里面。 protected override bool ProcessCmdKey(ref Message message, Keys keys){ switch (keys) { //按F2和原创 2011-10-25 07:24:18 · 1481 阅读 · 1 评论 -
C#响应HTML的事件。如果获得触发的元素和事件
在网上查找如何让C#响应一个HTML元素的事件。在很多文章里提到,使用AttachEventHandler或者element.click+=new HtmlElementEventHandler(functionname),经过测试,这2个方法有不同的地方。 例子:private void SayHello(object sender, EventArgs e){ Messa原创 2010-02-06 02:07:00 · 4398 阅读 · 2 评论