显示列表

匹配汉字:[\u4e00-\u9fff]
匹配姓名:[\u4e00-\u9fff]{2,4}

标签:正则 
查看全文 | 分类(C#/CSharp) | 访问(113) | 编辑

HttpWebResponse 返回的 Headers 中有中文的编码
这些要对这个重新解码,默认是用ASCII解码的
可自定义解码

string str = httpWebResponse.Headers[httpWebResponse.Headers.AllKeys[i]];
byte[] buffer = new byte[str.Length];
for (int i = 0; i < str.Length; ++i)
{
    buffer[i] = (byte)str[i];
}
System.Windows.Forms.MessageBox.Show(Encoding.GetEncoding("GB2312").GetString(buffer));
这里用 GB2312 进行解码,就能得到正确的内容。

查看全文 | 分类(C#/CSharp) | 访问(378) | 编辑

System.IO.Directory.GetCurrentDirectory()方法用于获得应用程序当前工作目录。
System.Windows.Forms.Application.StartupPath 获得应用程序的可执行文件的路径,不含文件名

StartupPath 可执行文件固定就不会变,可用于定位
GetCurrentDirectory 不一定是可执行文件所在目录,因启动的位置而变

如有两个程序 C:/A/a.exe 和 C:/B/b.exe
当在 a.exe 中启动 b.exe,System.Diagnostics.Process.Start(@"C:/B/b.exe")
这时,b.exe 中 Directory.GetCurrentDirectory()方法 返回值为“C:/A”,Application.StartupPath 值为“C:/B”
如果直接在 C:/B/ 中启动 b.exe,那么两个值就会一样,都为“C:/B”
这就是 Directory.GetCurrentDirectory 和 Application.StartupPath 的区别

查看全文 | 分类(C#/CSharp) | 访问(1038) | 编辑

在C#中使用关键字 abstract 来定义抽象类和抽象方法。

注意
抽象类不能被实例化,只能创建其继承者的实例。


在抽象类中可以定义抽象方法和非抽象方法,当一个类继承于抽象类,那么这个派生类必须实现所有的基类抽象方法。

抽象类
public abstract class Man
{
   public abstract void Work(); // 定义一个抽象方法,让其派生类实现

   public abstract string Name { get; set; } // 定义一个抽象属性
}


派生类
public class ManA : Man
{
   // 具体实现,用关键字 override 来重写方法
   public override void Work()
   {

   }

   private string name;

   public override string Name
   {
       get
       {
           return name
       }
       set
       {
           name = value;
       }
   }
}


抽象类适合其派生类有共同性质的东西,这样其派生类可以共用抽象类中的非抽象方法,这样可以少写一些代码。

查看全文 | 分类(C#/CSharp) | 访问(456) | 编辑

遍历窗口中所有控件
foreach (Control c1 in this.Controls)
所有控件都在集合 Controls 中。
但 ContextMenuStrip、Timer 等控件不在这个集合中,如果要获取可以使用反射的方法

System.Reflection.FieldInfo[] fieldInfo = this.GetType().GetFields(System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance);
for (int i = 0; i < fieldInfo.Length; i++)
{
   switch (fieldInfo[i].FieldType.Name)
   {
       case "ContextMenuStrip":
           ContextMenuStrip contextMenuStrip = (ContextMenuStrip)fieldInfo[i].GetValue(this);
           MessageBox.Show(contextMenuStrip.Name);
           break;
       case "Timer":
           Timer timer = (Timer)fieldInfo[i].GetValue(this);
           MessageBox.Show(timer.Interval.ToString());
           break;
   }
}

查看全文 | 分类(C#/CSharp) | 访问(555) | 编辑

ContextMenuStrip 是右键菜单对象
ContextMenuStrip 的使用
1.在 Form 中添加 ContextMenuStrip 控件

2.向 ContextMenuStrip 对象中添加 MenuItem 对象,MenuItem 就是菜单中的元素

3.每一个可以绑定右键菜单对象都会有一个 ContextMenuStrip 属性,把这个 ContextMenuStrip 对象设置给目标对象的 ContextMenuStrip 属性,这就完成了。

查看全文 | 分类(C#/CSharp) | 访问(1804) | 编辑

如何使用资源文件
每创建一个窗体就会自动生成一个.resx文件,可以在这个文件中加入字符串、图像、图标、文件等。
项目编译时,生成exe文件,这些图像、图标、文件等都会被写入 exe 文件中。

每一个窗体都有一个资源文件,并且项目有一个共用的资源文件,最好使用这个共用的资源文件,查看项目属性里,选中资源,就可以加入自己要的资源 添加资源 - 添加现有文件,就可以反图片资源放进入。

读取这个图片资源,如已经加入了一个 a.bmp 图像,名称是 Pic


Bitmap bitmap = 项目的名称空间.Properties.Resources.Pic;
这就可能用了这个资源了。

具体的类位于,Properties目录中的 Resources.resx 文件中,打开看下就明白了。

资源文件也可以自己创建,像创建类一个。

查看全文 | 分类(C#/CSharp) | 访问(549) | 编辑

创建一个Bitmap对象如下
Bitmap bitmap = new Bitmap(GetType(), "Images/1.bmp");
这里只指定图片名称和所在目录,没有指定根路径,如果要这么用,可能设置图片的属性。
属性中生成操作选择为嵌入的资源,这样就可以了。


另一种方法是,直接使用绝对地址,还是觉得这种好用一些
Bitmap bitmap = new Bitmap("C:/Images/1.bmp");

查看全文 | 分类(C#/CSharp) | 访问(535) | 编辑

用 Directory.GetFiles 获取目录中所有文件,返回的是一个数组,里面存放的是所有文件的名称
这个数组中文件的顺序和打开目录时看到的所有文件显示的顺序不一样。
猜想 Directory.GetFiles 返回的结果是没有排序的,我们打开目录时看到的文件列表是有排序的,默认按名称排序的。
所有解决的放法,是对返回结果的数组进行排序。

string[] array = Directory.GetFiles(path);
Array.Sort(array); // 这样就进行了排序

查看全文 | 分类(C#/CSharp) | 访问(1430) | 编辑

PHP中 time() 函数返回是一个整型,就是现在的时间减去1970 年 1 月 1 日 00:00:00 得到的秒数。
这个和 .Net 中的时间不一样,下面写了一个方法获取 PHP中 time() 函数返回值。

public long GetPHPTime()
{
   DateTime dataTime = new DateTime(1970, 1, 1);
   return (DateTime.Now.Ticks - dataTime.Ticks) / 10000000;
}

注意:php5.1以上时间戳会与实际时间相差8小时

查看全文 | 分类(C#/CSharp) | 访问(174) | 编辑
 总数:59   页次:5/6   首 页   上一页   下一页   尾 页