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. IO流02_文件过滤器

    [简述] 在File类的list方法中可以接收一个FilenameFilter参数,通过该参数可以列出只满足要求的文件. FilenameFilter接口里包含了一个accept(File dir, ...

  2. 九度OJ 1362 左旋转字符串(Move!Move!!Move!!!)【算法】

    题目地址:http://ac.jobdu.com/problem.php?pid=1362 题目描述: 汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运 ...

  3. .net面试题( 转)

    描述线程与进程的区别? 什么是Windows服务,它的生命周期与标准的EXE程序有什么不同 Windows上的单个进程所能访问的最大内存量是多少?它与系统的最大虚拟内存一样吗?这对于系统设计有什么影响 ...

  4. ASP.NET MVC3实现无刷新验证码

    在MVC中进行留言,评论等功能时,不可避免会用到表单提交时的验证码问题,有时,我们的作法是,当表单被提交后,在controller里去判断验证码的正确与否,但我认为这种用户体验是很差的,今天正好有后时 ...

  5. Android AndroidManifest学习笔记

    <application>标签 : android:allowBackup="true" 数据可以备份 <activity>标签:configChanges ...

  6. fedora 非root用户访问socket 没用权限

    在非root用户下执行基于Libpcap库编写的应用程序时不能正常运行,原因是由于libpcap库使用raw socket的套接字.而Raw Socket的使用需要root权限,否则raw socke ...

  7. HTML5课程大纲/学习路线

    HTML5课程大纲/学习路线 这是什么? 这个一个HTML技术路线的课程大纲/学习大纲. 你能用它做什么? 如果你是找工作的人, 利用本大纲, 你可以学习HTML5语言, 做一个HTML前端工程师, ...

  8. margin系列之keyword auto

    本系列摘自  px; margin: auto; /* 或者 margin: 0 auto; */ } HTML: <div id="demo"> <p>恩 ...

  9. 运行phpize失败排查

    ==相关参考== rpm包 http://rpmfind.net/linux/rpm2html/ phpize学习 ==问题及排查过程== 1.phpize失败 2.yum install php-d ...

  10. VB-获取某字符在其中出现的次数

    '方法1: Dim str As String " "))) '方法2: Dim n&, j& j = n = , text1.Text, "/ITEMN ...