问题列表:
c# ini访问类
c# 输入法切换类
使用c#读写文件
格式化字符串
从assemble中加载自定义资源
对stringcollection进行排序
c#builder的open tools api的bug
使用反射动态设定组件属性
将字符串复制到剪贴板
获取程序文件的版本信息
利用反射动态加载assembly动态执行类型方法
其他问题
c# ini访问类
using system;
using system.io;
using system.runtime.interopservices;
using system.text;
using system.collections;
using system.collections.specialized;
using system.windows.forms;
namespace sharpplus.ini {
/// <summary>
/// 一个模仿delphi的tinifile的类
/// 修订:1.1 修正了对中文系统的支持。
/// 1.2 增加了updatefile方法,实现了对win9x的支持
/// 1.3 增加了读写布尔,整数的操作
/// 1.4 修正了写ini虽然成功,但是会抛出异常的错误
/// 1.5 readstring返回的是trim后的字符串
/// 1.6 统一并扩大了读写缓冲区的大小
/// </summary>
public class inifile {
public string filename; //ini文件名
//声明读写ini文件的api函数
[dllimport("kernel32")]
private static extern bool writeprivateprofilestring(string section,string key,string val,string filepath);
[dllimport("kernel32")]
private static extern int getprivateprofilestring(string section,string key,string def, byte[] retval,int size,string filepath);
//类的构造函数,传递ini文件名
public inifile(string afilename) {
// 判断文件是否存在
fileinfo fileinfo=new fileinfo(afilename);
//todo:搞清枚举的用法
if ((!fileinfo.exists)) //|| (fileattributes.directory in fileinfo.attributes))
throw(new applicationexception("ini文件不存在"));
//必须是完全路径,不能是相对路径
filename = fileinfo.fullname;
}
//写ini文件
public void writestring(string section,string ident,string value) {
if (!writeprivateprofilestring(section, ident,value,filename))
{
// todo:抛出自定义的异常
throw(new applicationexception("写ini文件出错"));
}
}
//读取ini文件指定
public string readstring(string section,string ident, string default) {
//stringbuilder buffer = new stringbuilder(255);
byte[] buffer=new byte[65535];
int buflen=getprivateprofilestring(section,ident,default,buffer, buffer.getupperbound(0),filename);
//必须设定0(系统默认的代码页)的编码方式,否则无法支持中文
string s=encoding.getencoding(0).getstring(buffer);
s=s.substring(0,buflen);
return s.trim();
}
//读整数
public int readinteger(string section, string ident , int default){
string intstr=readstring(section, ident, convert.tostring(default));
try{
return convert.toint32(intstr);
}
catch (exception ex){
console.writeline(ex.message);
return default;
}
}
//写整数
public void writeinteger(string section,string ident, int value){
writestring(section, ident, value.tostring());
}
//读布尔
public bool readbool(string section, string ident, bool default){
try
{
return convert.toboolean(readstring(section, ident, convert.tostring(default) ));
}
catch (exception ex){
console.writeline(ex.message);
return default;
}
}
新闻热点
疑难解答