public class SettingHelper
{
//WPF下配置文件路径
public static readonly string SettingFilePath = AppDomain.CurrentDomain.BaseDirectory + "\\Setting.ini";
//使这个构造函数私有化
private SettingHelper()
{ }
//静态函数设为只读属性
private static class Instance
{
internal static readonly SettingHelper Setting = new SettingHelper();
} public static SettingHelper GetInstance()
{
return Instance.Setting;
} #region API函数声明 [DllImport("kernel32")]//返回0表示失败,非0为成功
private static extern long WritePrivateProfileString(string section, string key, string val, string filePath); [DllImport("kernel32")]//返回取得字符串缓冲区的长度
private static extern long GetPrivateProfileString(string section, string key, string def, StringBuilder retVal, int size, string filePath); #endregion #region 读Ini文件 public string ReadIniData(string section, string key)
{
return ReadIniData(section, key, string.Empty);
} public string ReadIniData(string section, string key, string defaultValue)
{
if (File.Exists(SettingFilePath))
{
StringBuilder s = new StringBuilder(); GetPrivateProfileString(section, key, defaultValue, s, , SettingFilePath); return s.ToString();
}
else
{
return String.Empty;
}
} #endregion //写Ini文件
public bool WriteIniData(string section, string key, string value)
{
if (File.Exists(SettingFilePath))
{
long OpStation = WritePrivateProfileString(section, key, value, SettingFilePath); if (OpStation == )
{
return false;
}
else
{
return true;
}
}
else
{
return false;
}
} //给窗体初始状态赋值
private string windowState;
public WindowState WindowState
{
get
{
if (string.IsNullOrWhiteSpace(windowState))
{
SettingHelper st = SettingHelper.GetInstance(); windowState = st.ReadIniData("WPF", "WindowState");
} if (string.IsNullOrWhiteSpace(windowState))
{
windowState = ((int)System.Windows.WindowState.Normal).ToString();
} return (WindowState)Convert.ToInt32(windowState);
} set
{
windowState = ((int)value).ToString(); SettingHelper st = SettingHelper.GetInstance(); //SettingHelper.GetInstance 获取SettingHelper的实例 st.WriteIniData("WPF", "WindowState", windowState);
}
} //给窗体初始大小赋值
private string left;
public double Left
{
get
{
if (string.IsNullOrWhiteSpace(left)) //IsNullOrWhiteSpace判断是否为空的字符串或空格
{
SettingHelper st = SettingHelper.GetInstance(); left = st.ReadIniData("WPF", "Left");
} if (string.IsNullOrWhiteSpace(left))
{
left = "";
} return Convert.ToDouble(left);
} set
{
left = value.ToString(); SettingHelper st = SettingHelper.GetInstance(); st.WriteIniData("WPF", "Left", left);
}
} private string top; public double Top
{
get
{
if (string.IsNullOrWhiteSpace(top))
{
SettingHelper st = SettingHelper.GetInstance(); top = st.ReadIniData("WPF", "Top");
} if (string.IsNullOrWhiteSpace(top))
{
top = "";
} return Convert.ToDouble(top);
} set
{
top = value.ToString(); SettingHelper st = SettingHelper.GetInstance(); st.WriteIniData("WPF", "Top", top);
}
}
}

WPF手写代码配置文件——单例的更多相关文章

  1. ClownFish:比手写代码还快的通用数据访问层

    http://www.cnblogs.com/fish-li/archive/2012/07/17/ClownFish.html 阅读目录 开始 ClownFish是什么? 比手写代码还快的执行速度 ...

  2. 手写代码自动实现自动布局,即Auto Layout的使用

    手写代码自动实现自动布局,即Auto Layout的使用,有需要的朋友可以参考下. 这里要注意几点: 对子视图的约束,若是基于父视图,要通过父视图去添加约束. 对子视图进行自动布局调整,首先对UIVi ...

  3. 2019前端面试系列——JS高频手写代码题

    实现 new 方法 /* * 1.创建一个空对象 * 2.链接到原型 * 3.绑定this值 * 4.返回新对象 */ // 第一种实现 function createNew() { let obj ...

  4. 前端面试手写代码——模拟实现new运算符

    目录 1 new 运算符简介 2 new 究竟干了什么事 3 模拟实现 new 运算符 4 补充 预备知识: 了解原型和原型链 了解this绑定 1 new 运算符简介 MDN文档:new 运算符创建 ...

  5. 如果选择构建ui界面方式,手写代码,xib和StoryBoard间的博弈

    代码手写UI这种方法经常被学院派的极客或者依赖多人合作的大型项目大规模使用. 大型多人合作项目使用代码构建UI,主要是看中纯代码在版本管理时的优势,检查追踪改动以及进行代码合并相对容易一些. 另外,代 ...

  6. .netER的未来路,关于基础是否重要和应该自己手写代码吗?

    http://www.cnblogs.com/onepiece_wang/p/5558341.html#!comments 引用"基础知识的学习,一开始可能是背书,但是在后续若干年的工作过程 ...

  7. 手写代码UI,xib和StoryBoard间的的优劣比较

    在UI制作方面,逐渐分化三种主要流派:使用代码手写UI:使用单个xib文件组织viewController或者view:使用StoryBoard来通过单个或很少的几个文件构建UI.三种方式各有优劣,也 ...

  8. UI到底应该用xib/storyboard完成,还是用手写代码来完成?

    UI到底应该用xib/storyboard完成,还是用手写代码来完成? 文章来源:http://blog.csdn.net/libaineu2004/article/details/45488665 ...

  9. Appium初始化设置:手写代码连接手机、appium-desktop连接手机

    一.包名获取的三种方式 1)找开发要2)mac使用命令:adb logcat | grep START win使用命令:adb logcat | findstr START 或者可以尝试使用第3条命令 ...

随机推荐

  1. Golang,用map写个单词统计器

    Golang中也有实用的泛型编程模板.如map.据Go官方团队称,其实现为Hash表,而非类似cpp或Java的红黑树.所以理论上速度更能快上几个等级(Hash与红黑树的效率对比可以看我的文章C++中 ...

  2. lucene4.0 基于smb文件服务器的全文检索

    使用lucene 4.0版本的全文检索 所需要的jar包  网速太慢,下次有空再把jar传上来 1.FileIndex  建立索引,查询,删除,更新 package com.strongit.tool ...

  3. OpenJudge/Poj 1458 Common Subsequence

    1.链接地址: http://poj.org/problem?id=1458 http://bailian.openjudge.cn/practice/1458/ 2.题目: Common Subse ...

  4. linux RedHat6.4下nginx安装

    安装rpm 检测是否有已安装rpm包: rpm–qa | grep pcre rpm–qa | grep zlib rpm–qa | grep openssl 若没有则需安装(这些包可以在redhat ...

  5. EF 的 霸气配置

    通过EF 作为操作数据库的工具有一段时间了,也做了几个相对不大的项目,慢慢的也对EF的使用摸索出来了一些规则,虽然说不是技术难点,但是,我说的是但是,能够提高我们开发效率的棉花糖有时我们还是必须要吃的 ...

  6. PHP学习笔记(3) - 奇怪的class与autoload

    PHP的class与其他语言有很多不同点.PHP允许很奇葩的在静态方法中调用实例方法,提供了关键字self和static用于访问类自身的静态成员.self永远是指当前的类,而static则可能会变成指 ...

  7. Python设计模式——模版方法模式

    1.模版方法模式 做题的列子: 需求:有两个学生,要回答问题,写出自己的答案 #encoding=utf-8 __author__ = 'kevinlu1010@qq.com' class Stude ...

  8. ArcGIS API for JavaScript 学习笔记(一)

    终于开始了 噩梦一般的ArcGIS 我特别不习惯这种结构化的程序写法 写起来特别吃力 特别是把几个功能整合到同一个页面去的时候. 写程序的时候,一般我喜欢先写个Demo然后再把Demo上面的功能加到页 ...

  9. C# - 中断模式下的调试

    1. 设置断点 选中需要设置断点的行,右键选择断点插入断点,此行左侧显示红色圆形标志.或者F9 有几个条件断点类型: a. 条件断点 b. 命中次数,大于,几倍于,大于等于你设置的断点次数此时中断 c ...

  10. <四> SQL存储过程

    存储过程的定义: create procedure procedurename @param1 nvarchar(30) as select * from tablename where name = ...