我的记事本 第三讲:保存配置信息
来源:互联网 发布:windowxp主题 windows 编辑:程序博客网 时间:2024/05/26 08:41
默认字体、字号、背景色、前景色都是保存在Option.xml文件中。
<?xmlversion="1.0"encoding="utf-8" ?>
<settings>
<fontname>微软雅黑</fontname>
<fontsize>20</fontsize>
<fontcolor>Black</fontcolor>
<backcolor>White</backcolor>
<wordwrap>false</wordwrap>
</settings>
l AppHelper的实现
///<summary>
///应用程序辅助类,保存、加载应用程序配置信息
///</summary>
public class AppHelper {
public static Font DefaultFont; //默认字体
public static Color FontColor; //默认字体颜色
public static Color BackColor; //文本框背景颜色
public static bool WordWrap; //自动换行
private static string xmlFilename = "Option.xml";
///<summary>
///加载应用程序配置信息
///</summary>
public static void LoadSettings() {
XmlDocument doc = new XmlDocument();
doc.Load(xmlFilename);//加载xml文件
//读取fontname节点
string fontname = "宋体";
XmlNode fontnameNode = doc.SelectSingleNode("//fontname");
if (fontnameNode != null) {
fontname = fontnameNode.InnerText;
}
//读取fontsize节点
float fontsize = 10;
XmlNode fontsizeNode = doc.SelectSingleNode("//fontsize");
if (fontsizeNode != null) {
fontsize = Convert.ToSingle(fontsizeNode.InnerText);
}
//读取fontcolor节点
DefaultFont = new Font(fontname, fontsize);
string fontcolor = "Black";
XmlNode fontcolorNode = doc.SelectSingleNode("//fontcolor");
if (fontcolorNode != null) {
fontcolor = fontcolorNode.InnerText;
}
FontColor = Color.FromName(fontcolor);
//读取backcolor节点
string backcolor = "White";
XmlNode backcolorNode = doc.SelectSingleNode("//backcolor");
if (backcolorNode != null) {
backcolor = backcolorNode.InnerText;
}
BackColor = Color.FromName(backcolor);
}
///<summary>
///保存应用程序配置信息
///</summary>
public static void SaveSettings() {
XmlDocument doc = new XmlDocument();
doc.Load(xmlFilename);
XmlNode fontnameNode = doc.SelectSingleNode("//fontname");
if (fontnameNode != null) {
fontnameNode.InnerText = DefaultFont.Name;
}
XmlNode fontsizeNode = doc.SelectSingleNode("//fontsize");
if (fontsizeNode != null) {
fontsizeNode.InnerText = DefaultFont.Size.ToString();
}
XmlNode fontcolorNode = doc.SelectSingleNode("//fontcolor");
if (fontcolorNode != null) {
fontcolorNode.InnerText = FontColor.Name;
}
XmlNode backcolorNode = doc.SelectSingleNode("//backcolor");
if (backcolorNode != null) {
backcolorNode.InnerText = BackColor.Name;
}
//保存xml更改
doc.Save(xmlFilename);
}
}
这里的成员变量为什么要使用static呢?
static类型变量使得即使创建多个AppHelper实例,静态变量仍只有一个,多个实例共享同一个变量。因为对于应用程序而言,整体的配置信息没必要创建多个实例对象,而是针对一个应用程序,只有一个实例。
l 加载系统的所有字体
int selectedIndex = -1;
for (int i = 0; i < FontFamily.Families.Length; i++) {
FontFamily family = FontFamily.Families[i];
cboFontFamily.Items.Add(family.Name);
if (family.Name == AppHelper.DefaultFont.Name) {
selectedIndex = i;
}
}
cboFontFamily.SelectedIndex = selectedIndex;
l 在组合框中添加颜色块,需要改写组合框的DrawItem事件
private void cboColor_DrawItem(object sender, DrawItemEventArgs e) {
Rectangle re = e.Bounds;
if (e.Index >= 0) {
if (e.State == DrawItemState.Selected) {
e.Graphics.FillRectangle(SystemBrushes.Highlight, re);
} else {
e.Graphics.FillRectangle(SystemBrushes.Window, re);
}
StringFormat sf = new StringFormat();
sf.Alignment = StringAlignment.Near;
string s = (string)(((ComboBox)sender).Items[e.Index]);
Rectangle rd = new Rectangle(re.X + 2, re.Y + 2, 20, re.Height - 4);
Rectangle rt = new Rectangle(re.X + 24, re.Y + 2, re.Width - 20, re.Height - 4);
e.Graphics.FillRectangle(new SolidBrush(Color.FromName(s)), rd);
e.Graphics.DrawRectangle(new Pen(Color.Black), rd);
if (e.State == DrawItemState.Selected) {
e.Graphics.DrawString(s, new Font("宋体", 9), new SolidBrush(Color.White), rt, sf);
} else {
e.Graphics.DrawString(s, new Font("宋体", 9), new SolidBrush(Color.Black), rt, sf);
}
}
}
至此,我们完成了《MyNotepad》的大部分内容,当然还有很多进行扩充或者优化的。比如:实现搜索、替换,状态栏,显示文字的行号,图片设置等等。
希望有兴趣,且有能力的读者能继续完善它。
谢谢您的阅读!
- 我的记事本 第三讲:保存配置信息
- 我的记事本 第三讲:保存配置信息
- 我的记事本 第二讲:基本功能的实现
- 我的记事本 第一讲:文件的打开与关闭
- 我的记事本 第一讲:文件的打开与关闭
- 我的记事本 第二讲:基本功能的实现
- 程序配置信息的保存
- 保存应用程序的配置信息
- 我的VIM配置保存
- 我的记事本
- 我的记事本
- 我的记事本
- 我的记事本
- 我的记事本程序
- java-我的记事本
- 我的记事本
- PhoneGap的学习第三讲-通讯录信息的获取
- cocos2dx配置信息保存
- 我的记事本 第二讲:基本功能的实现
- 考研指导
- 我的记事本 第一讲:文件的打开与关闭
- wince 6.0 导出 支持MFC的SDK
- ExtJS layout的9种样式详解
- 我的记事本 第三讲:保存配置信息
- 开博序
- Jquery通用页面验证插件 power by Think_Fish
- jQuery对象中的类数组操作
- 整理:字符串操作
- 网游自适应数值平衡
- Vss2005安装配置 收藏
- 只需要MTK工程的bin文件、手机和下载线便可以修改各种手机软件
- vi 笔记总结