0

Windows フォーム アプリケーションを使用してアジェンダ プログラムを作成しています。ファイルからハッシュ テーブルにデータをロードし、このデータをテキスト ボックスに表示しようとしています。テキスト ボックスのラベルは日付ですが、これらの日付は形式 ( dd MMMM dddd11 月 30 日金曜日など) であり、ハッシュ テーブルのキー値として使用されます。ファイル内の日付は ( dd MM yyyy) の形式です。ファイル内のデータのサンプルが表示されます。

2012/07/10 10:30 水泳に行きます *

2012/11/30 15:30 水泳に行きます *

フォームをロードすると、対応するテキストボックスにデータが表示されます。たとえば、15:30 に水泳に行きます * は、ラベル「11 月 30 日金曜日」のテキスト ボックスの下に表示する必要があります (2012 年 11 月 30 日に対応するため)。以下のコードのように、データをキーと値のペアに分割できました。

StreamReader sr=new StreamReader("Path/ajand.txt");

   string line;

    while ((line = sr.ReadLine()) != null)
    {
      key = line.Substring(0, 10);//gets date
      value = line.Substring(10);//gets string
      hT.Add(key, value);
    }

対応するテキストボックスにデータを追加するにはどうすればよいですか?

4

2 に答える 2

0

理想的には、フォームとデータファイルの両方のデータをDateTimeインスタンスに変換し、それらを比較する必要があります。ただし、フォーム(ラベル内)の日付に年コンポーネントがない場合、最善の策は、データファイルのデータをDateTimeオブジェクトに変換してから、その日付の文字列形式を抽出することです(フォームデータと同じ形式)。この時点で、文字列の比較により、日付を一致させることができます。例えば:

foreach(DictionaryEntry dataEntry in hT)
{
   //Will throw a FormatException if 'dataEntry.Key' doesn't represent a valid date format
   DateTime keyAsDate = Convert.ToDateTime(dataEntry.Key);

   //This overload of 'ToString' uses CurrentCulture
   string comparisonKey = keyAsDate.ToString("dd MMMM dddd");

   if(formLabel.Text.Equals(comparisonKey, StringComparison.OrdinalIgnoreCase))
   {
       formTextBox.Text = dataEntry.Value;
   }
}
于 2012-12-01T04:00:35.297 に答える
0

Convert.toDateTime(msdn:http://msdn.microsoft.com/en-us/library/cc165448.aspxを参照)を使用して、日付を目的の形式に変換します。

次に、ハッシュテーブルの各エントリをループします

foreach(var entry in hashTable)
{
    //todo: convert entry.key (which is the date) to your format
    //      then set the label to the formatted date.
    //      lastly, set the text for the textBox
}
于 2012-11-30T21:00:37.277 に答える