在visual C#中永久设置文本框值一次

时间:2016-05-08 14:07:07

标签: c# winforms visual-studio

我是C#编程的新手。我正在使用winforms,我正在制作一个小应用程序,我必须将邮件发送到10-15个邮件ID。为此,首先我需要在文本框中输入邮件ID,然后发送邮件。如果我必须再次发送邮件,之前输入的邮件ID应显示在文本框中,以便我可以单击“发送邮件”按钮。如果我需要编辑任何邮件ID,我将对其进行编辑,并且从下一次开始,新的更新邮件ID应出现在文本框中。

如何做到这一点。我需要任何数据库吗?我没有任何创建数据库的经验。请帮我解决这个问题。我可以学习的任何参考或链接。

由于

2 个答案:

答案 0 :(得分:4)

您是否希望在整个应用程序生命周期内或甚至在重新启动应用程序后保留您输入的电子邮件ID?

  1. 如果您需要整个应用程序中的文本框值,那么您可以使用textbox.Text属性,可以将其分配给整个应用程序中的某个成员,并在需要时获取它。

  2. 如果您的要求即使重新启动应用程序也需要保留数据,则可能需要将输入的值存储在数据库中。但是为此目的使用数据库可能效率不高。您可以考虑为此方案使用文本文件或xml文件。

  3. 您可以在Google中轻松找到如何实现上述内容并获取大量样本。

    请参阅以下代码,了解xml序列化/反序列化。

    /// <summary>
    /// Serializes an object.
    /// </summary>
    /// <typeparam name="T"></typeparam>
    /// <param name="serializableObject"></param>
    /// <param name="fileName"></param>
    public void SerializeObject<T>(T serializableObject, string fileName)
    {
        if (serializableObject == null) { return; }
    
        try
        {
            XmlDocument xmlDocument = new XmlDocument();
            XmlSerializer serializer = new XmlSerializer(serializableObject.GetType());
            using (MemoryStream stream = new MemoryStream())
            {
                serializer.Serialize(stream, serializableObject);
                stream.Position = 0;
                xmlDocument.Load(stream);
                xmlDocument.Save(fileName);
                stream.Close();
            }
        }
        catch (Exception ex)
        {
            //Log exception here
        }
    }
    
    
    /// <summary>
    /// Deserializes an xml file into an object list
    /// </summary>
    /// <typeparam name="T"></typeparam>
    /// <param name="fileName"></param>
    /// <returns></returns>
    public T DeSerializeObject<T>(string fileName)
    {
        if (string.IsNullOrEmpty(fileName)) { return default(T); }
    
        T objectOut = default(T);
    
        try
        {
            XmlDocument xmlDocument = new XmlDocument();
            xmlDocument.Load(fileName);
            string xmlString = xmlDocument.OuterXml;
    
            using (StringReader read = new StringReader(xmlString))
            {
                Type outType = typeof(T);
    
                XmlSerializer serializer = new XmlSerializer(outType);
                using (XmlReader reader = new XmlTextReader(read))
                {
                    objectOut = (T)serializer.Deserialize(reader);
                    reader.Close();
                }
    
                read.Close();
            }
        }
        catch (Exception ex)
        {
            //Log exception here
        }
    
        return objectOut;
    }
    

答案 1 :(得分:2)

这是我使用的演示代码。我使用了一个按钮来读取文件,然后使用拆分器拆分文本并将其显示在文本框中。

private void button1_Click(object sender, EventArgs e)
    {
        Stream file;
        OpenFileDialog openFileDialog = new OpenFileDialog();
        if (openFileDialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)
        {
            if ((file = openFileDialog.OpenFile()) != null)
            {

                string fileName = openFileDialog.FileName;
                string fileText = File.ReadAllText(fileName);


                string[] newText = fileText.Split('Q');

                st1name.Text = newText[0];
                st1email.Text = newText[1];
                st2name.Text = newText[2];
                st2email.Text = newText[3];
            }
        }
    }