我正在使用带有C#的Visual Studio 2008(.NET Framework 3.0)开发Windows Mobile 6.0应用程序,我想从Form2中的comboBox保存所选值,并在关闭并重新打开后再检索它。在Form1中申请。
答案 0 :(得分:0)
有很多方法可以实现这一点。我更喜欢在.xml文件中保存此值(与您要保存的任何其他值一起)。当您在表单上执行“确定”按钮时,它会将值保存到该值。打开表单后,它将打开并读取.xml文件,根据需要确定值。查看此link有关如何读取和写入.xml文件的信息。
答案 1 :(得分:0)
首先,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文件结构。
app.settings的紧凑框架实现: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文件位置:Find INI File From application path and Read INI File in Compact framework C# 读/写ini文件http://www.codeproject.com/Articles/21896/INI-Reader-Writer-Class-for-C-VB-NET-and-VBScript
答案 2 :(得分:0)
最简单的方法是使用xmlserializer。这样您就不需要指定如何写入或读取每个值。只需传递它们的流对象和要序列化的对象,xmlserializer将负责编写值。与返回值相同,使用反序列化并获取对象并将其转换为目标类型。