WPF手写代码配置文件——单例
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手写代码配置文件——单例的更多相关文章
- ClownFish:比手写代码还快的通用数据访问层
http://www.cnblogs.com/fish-li/archive/2012/07/17/ClownFish.html 阅读目录 开始 ClownFish是什么? 比手写代码还快的执行速度 ...
- 手写代码自动实现自动布局,即Auto Layout的使用
手写代码自动实现自动布局,即Auto Layout的使用,有需要的朋友可以参考下. 这里要注意几点: 对子视图的约束,若是基于父视图,要通过父视图去添加约束. 对子视图进行自动布局调整,首先对UIVi ...
- 2019前端面试系列——JS高频手写代码题
实现 new 方法 /* * 1.创建一个空对象 * 2.链接到原型 * 3.绑定this值 * 4.返回新对象 */ // 第一种实现 function createNew() { let obj ...
- 前端面试手写代码——模拟实现new运算符
目录 1 new 运算符简介 2 new 究竟干了什么事 3 模拟实现 new 运算符 4 补充 预备知识: 了解原型和原型链 了解this绑定 1 new 运算符简介 MDN文档:new 运算符创建 ...
- 如果选择构建ui界面方式,手写代码,xib和StoryBoard间的博弈
代码手写UI这种方法经常被学院派的极客或者依赖多人合作的大型项目大规模使用. 大型多人合作项目使用代码构建UI,主要是看中纯代码在版本管理时的优势,检查追踪改动以及进行代码合并相对容易一些. 另外,代 ...
- .netER的未来路,关于基础是否重要和应该自己手写代码吗?
http://www.cnblogs.com/onepiece_wang/p/5558341.html#!comments 引用"基础知识的学习,一开始可能是背书,但是在后续若干年的工作过程 ...
- 手写代码UI,xib和StoryBoard间的的优劣比较
在UI制作方面,逐渐分化三种主要流派:使用代码手写UI:使用单个xib文件组织viewController或者view:使用StoryBoard来通过单个或很少的几个文件构建UI.三种方式各有优劣,也 ...
- UI到底应该用xib/storyboard完成,还是用手写代码来完成?
UI到底应该用xib/storyboard完成,还是用手写代码来完成? 文章来源:http://blog.csdn.net/libaineu2004/article/details/45488665 ...
- Appium初始化设置:手写代码连接手机、appium-desktop连接手机
一.包名获取的三种方式 1)找开发要2)mac使用命令:adb logcat | grep START win使用命令:adb logcat | findstr START 或者可以尝试使用第3条命令 ...
随机推荐
- (转)安装程序发布利器——InstallShield 2011 Limited Edition
最近经常写WCF服务和Windows服务,之前知道可以通过vs2010自带的“安装项目”可以发布程序,但是自vs2010起,同时提供了InstallShield LE. 下面我们通过图示,来了解Ins ...
- 文本框限制输入类型<input>的输入框
最近在开发完一个项目后,又测试人员测试bug,然后我根据他们测试出来的bug一个一个的改,然后就遇到了一个问题,文本框是用来搜索,但是,比如这个文本框是用来搜索年龄的区间,输入条件的时候,如果输入了非 ...
- 我的VIM.rc
我的VIM.rc """""""""""""""& ...
- RTTI(Runtime Type Information )
RTTI 是“Runtime Type Information”的缩写,意思是:运行时类型信息.它提供了运行时确定对象类型的方法.本文将简略介绍 RTTI 的一些背景知识.描述 RTTI 的概念,并通 ...
- 九度OJ 1446 Head of a Gang -- 并查集
题目地址:http://ac.jobdu.com/problem.php?pid=1446 题目描述: One way that the police finds the head of a gang ...
- PLINQ 简介
PLINQ和LINQ的语法基本是差不多的,PLINQ该如何实现并行 var query = from item in source.AsParallel() select item; 一个简单的AsP ...
- React Native在虚拟运行app时,报错RCTRootView not found,怎么解决?
报错: 解决方案:
- 【JPA】两种不同的实现jpa的配置方法
两种不同的实现jpa的配置方法 第一种: com.mchange.v2.c3p0.ComboPooledDataSource datasource.connection.driver_class=co ...
- 【@Transactional】Spring 之注解事务 @Transactional
spring 事务注解 默认遇到throw new RuntimeException("...");会回滚 需要捕获的throw new Exception("...&q ...
- Swagger+AutoRest
Swagger+AutoRest 生成web api客户端(.Net) 简介 对于.net来说,用web api来构建服务是一个不错的选择,都是http请求,调用简单,但是如果真的要在程序中调用, ...