2

我正在使用带有 C# 的 Visual Studio 2008 (.NET Framework 3.0) 开发 Windows mobile 6.0 应用程序,例如,我想从 Form2 中的组合框中保存选定的值,然后在我关闭并重新打开 Form1 中的应用程序后检索它.

4

3 回答 3

0

有很多方法可以使这成为可能。我更喜欢将此值(连同您想要保存的任何其他值)保存在 .xml 文件中。当您处理表单上的“确定”按钮时,它会将值保存到值中。打开表单后,它将打开并读取 .xml 文件并根据需要分配值。查看此链接,了解如何读取和写入 .xml 文件。

于 2013-08-20T15:24:03.717 回答
0

最简单的方法是使用 xmlserializer。这样您就不需要指定如何写入或读取每个值。只需将流对象和要序列化的对象传递给它们,xmlserializer 就会负责值的写入。与取回值相同,使用反序列化并获取对象并将其转换为目标类型。

于 2014-05-03T16:42:33.770 回答
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 的 Compact Framework 实现:http: //www.codeproject.com/Articles/6308/AppSettings-Implementation-for-Compact-Frameworkhttp://www.codeproject.com/Articles/51848/Compact-Framework-配置-XML-文件-读写

Ini 或 xml 文件位置作为程序可执行文件:从应用程序路径查找 INI 文件并在 Compact 框架 C# 中读取 INI 文件 读/写 ini 文件http://www.codeproject.com/Articles/21896/INI-Reader-Writer-Class- for-C-VB-NET-and-VBScript

于 2013-08-21T04:08:54.490 回答