2016-05-08 5 views
2

私はC#のプログラミングが初めてです。私はwinformsを使用しています。私は10-15のメールIDにメールを送信する必要がある小さなアプリケーションを作っています。このためには、まずテキストボックスにメールIDを入力してメールを送信する必要があります。メールを再度送信する必要がある場合は、以前に入力したメールIDがテキストボックスに表示され、メールを送信ボタンをクリックするだけです。メールIDを編集する必要がある場合は編集し、次回以降は新しい更新されたメールIDがテキストボックスに表示されます。ビジュアルC#で永続的にテキストボックスの値を設定する

これを行う方法。これにはデータベースが必要ですか?データベース作成の経験はありません。簡単な解決策を教えてください。私が学ぶところからの参照やリンク。

おかげ

+0

永続性を必要としない場合は、メールIDを 'List 'に格納し、この 'List'に追加/編集することができます。永続化する必要がある場合(たとえば、アプリケーションの再起動時にメールIDが必要な場合)、このデータをどこかに書き込む必要があります。データベースはちょっと残酷かもしれませんが、フラットファイルがあなたを援助します。 CSVほどシンプルなものです。 – TEK

答えて

4

は、あなたがあなたのアプリケーションのライフサイクルを通じて、あるいはアプリケーションを再起動した後、一度入力した電子メールIDを維持したいですか?あなただけではアプリケーション全体でテキストボックスの値が必要な場合は

  1. は、その後、あなたは多分、アプリケーション全体でいくつかのメンバーに割り当て、必要な時はいつでもそれを得る、textbox.Textプロパティを使用することができます。

  2. アプリケーションを再起動してもデータを保持する必要があるような要件の場合は、入力した値をデータベースに保存する必要があります。しかし、この目的のためにデータベースを使用することは効率的ではないかもしれません。このシナリオでは、テキストファイルまたはxmlファイルの使用を検討することができます。

上記のことを達成する方法を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; 
} 
+0

ありがとう私の要件は、あなたが2番目のポイントで述べたものです。テキストファイルからそれらのEメールIDを取得することが可能で、自動的にテキストボックスに表示されますか?私は間違いなくそれについて検索します。 –

+0

@annacarolinaあなたはテキストファイルを読んでから、そのテキストファイルの内容を 'TextBox'に追加する必要があります。おそらく 'ListBox'はこれを管理するためのより良いコントロールでしょうか? – TEK

+0

ようこそ。私は私の答えにいくつかのサンプルコードを追加しました。チェックしてください。 – ViVi

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]; 
      } 
     } 
    } 
+0

情報を共有していただきありがとうございます。似たような問題に直面している人にとっては、間違いなく役に立ちます。 – ViVi