【问题标题】:Populating textboxes from a hashtable从哈希表填充文本框
【发布时间】:2012-11-30 20:13:19
【问题描述】:

我正在使用 Windows 窗体应用程序创建议程程序,我正在尝试将文件中的数据加载到哈希表中并将这些数据显示到文本框中。文本框上的标签是日期,但这些日期的格式为(dd MMMM dddd 例如 11 月 30 日星期五)并用作哈希表的键值。文件中的日期格式为 (dd MM yyyy)。显示文件中的数据示例。

10/07/2012 10.30 * 去游泳

2012 年 11 月 30 日 15.30 * 去游泳

当我加载表单时,数据应该显示在相应的文本框中。例如将在 15.30 去游泳 * 必须显示在带有标签“11 月 30 日星期五”的文本框下(因为它对应于日期 30/11/2012)。我能够将数据拆分为键值对,如下面的代码所示:

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);
    }

如何将数据添加到相应的文本框中?

【问题讨论】:

  • 主题不应该是:从哈希表中填充文本框吗?
  • 您是否只处理 2012 年的日期?我问你是因为在文本框中没有提到日期格式的年份组件。
  • @chamila_c 文本框中的日期格式不显示年份,格式为 (dd MMMM dddd) 但文件中的日期显示年份为 dd MM yyyy
  • 那么您是否有权访问用于填充文本框的基础日期(即包括年份组件),或者您是否只能访问文本本身(即格式为 dd MMMM dddd)?
  • @chamila_c 我只能访问文本本身,即 dd MMMM dddd 形式的文本,没有基础年份组件。

标签: c# winforms hashtable


【解决方案1】:

使用 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
}

【讨论】:

    【解决方案2】:

    理想情况下,您希望将表单和数据文件中的数据都转换为 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;
       }
    }
    

    【讨论】:

    • 我在DateTime keyAsDate = Convert.ToDateTime(dataEntry.Key); 行收到一个错误,说“对象不包含键的定义”我不明白为什么。
    • hmmm - 可能显式输入哈希表项就可以了 - 请参阅最新编辑:foreach(DictionaryEntry dataEntry in hT)
    • 它仍然给出类似的错误消息“System.Collections.DictionaryEntry 不包含 key 的定义”..
    • 我重新启动了程序,之前的修改foreach(DictionaryEntry dataEntry in hT) 成功了。谢谢。:))))
    • 哎呀,错误消失了,但根本没有填充数据。文本框为空。它应该可以工作,不知道为什么它不起作用。还尝试进入代码但无法放置错误..
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-11-25
    • 1970-01-01
    • 2015-05-30
    • 1970-01-01
    • 2016-12-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多