如何在Windows移动应用程序中存储字符串值并在以后进行检索
本文关键字:检索 存储 Windows 移动 应用程序 字符串 | 更新日期: 2023-09-27 18:28:18
我正在使用Visual Studio 2008(.NET Framework 3.0)和C#开发一个Windows mobile 6.0应用程序,例如,我想将所选值保存在Form2中的comboBox中,并在关闭并重新打开Form1中的应用程序后检索它。
有很多方法可以实现这一点。我更喜欢将这个值(以及您想要保存的任何其他值)保存在.xml文件中。当你按下表单上的"确定"按钮时,它会将值保存到值中。打开表单后,它将打开并读取.xml文件,根据需要对值进行分类。查看此链接,了解如何读取和写入.xml文件。
首先,没有适用于Windows Mobile的Compact Framework 3.0版本。你在谈论Windows Phone 7或8吗?
对于Windows Mobile(Compact Framework 2.0或3.5):如果只想存储/检索一个值,只需使用注册表即可保存和恢复该值。
using System;
using System.Text;
using Microsoft.Win32;
namespace StoreString
{
class RegStoreClass:IDisposable
{
RegistryKey m_regKey = null;
String m_AppName="";
String m_Value = "";
public String sValue{
get{
readReg();
return m_Value;
}
set{
m_Value=value;
this.writeReg();
}
}
String AppName
{
get
{
if (m_AppName == "")
{
//assign AppName
string aname;
//get the executable name
m_AppName = System.Reflection.Assembly.GetExecutingAssembly().GetName().Name;
//remove extra infos
}
return m_AppName;
}
}
public RegStoreClass()
{
try
{
//open or create sub key for read/write
m_regKey = Registry.LocalMachine.CreateSubKey(AppName);
}
catch (Exception)
{
}
//try to read value from sub key
if (!readReg())
{
//something failed, write actual value to reg
writeReg();
}
}
public void Dispose(){
m_regKey.Flush();
m_regKey.Close();
}
bool readReg(){
bool bRet=false;
try
{
string s = (string)m_regKey.GetValue("Value", "n/a");
m_Value = s;
bRet=true;
}
catch (Exception)
{
}
return bRet;
}
bool writeReg(){
bool bRet = false;
try
{
m_regKey.SetValue("Value", m_Value, RegistryValueKind.String);
m_regKey.Flush();
bRet = true;
}
catch (Exception)
{
}
return bRet;
}
}
}
在Form2代码中使用上面的类(例如regClass)。然后,当您需要存储或检索存储的值时:
保存新值:
regClass.sValue = comboBox1.SelectedItem.ToString();
读取保存值:
string s = regClass.sValue
上面的类挖掘应用程序名称本身,并将其用作在注册表中存储值的子项。
==========================================如果您遇到需要存储越来越多的值,最好使用一个可以为您存储这些值的类。存储可以是外部文件,也可以是注册表。外部文件可以像ini文件一样组织,也可以像xml文件一样具有结构。
应用程序设置的Compact Framework实现:http://www.codeproject.com/Articles/6308/AppSettings-Implementation-for-Compact-Framework和http://www.codeproject.com/Articles/51848/Compact-Framework-Configuration-XML-File-Read-Writ
作为程序可执行文件的Ini或xml文件位置:从应用程序路径查找Ini文件并在Compact framework C中读取Ini文件#读取/写入ini文件http://www.codeproject.com/Articles/21896/INI-Reader-Writer-Class-for-C-VB-NET-and-VBScript
最简单的方法是使用xmlserializer。这样,您就不需要指定如何写入或读取每个值。只需将流对象和要序列化的对象传递给它们,xmlserializer就会负责值的编写。与获取值相同,使用反序列化并获取对象并将其强制转换为目标类型。