【问题标题】:Output dictionary to textbox in C#在 C# 中将字典输出到文本框
【发布时间】:2012-12-29 14:43:26
【问题描述】:

我有一个包含字符串和双精度的字典 myDataItems。我将值从 2 个文本框传递给字典,1 个文本框传递字符串值,另一个传递双精度值。我想知道如何在我用于输出目的的第三个文本框(txtOutput)中显示字典项目?

public partial class Form1 : Form 
{
   private Dictionary<string, double> myDataItems = new Dictionary<string, double>();
   private string dataName;
   private double dataCost;

   private void dataItemSend_Click(object sender, EventArgs e)
   {
      dataName = dataNameInput.Text;
      dataCost = Convert.ToDouble(dataCostInput.Text);
      myDataItems.Add(dataName, dataCost);
      txtOutput.Text = myDataItems.ToString();
   }
}

【问题讨论】:

  • foreach (var pair in myDataItems) { /* add pair.Key and pair.Value to txtOutput */ }
  • foreach(KeyValuePair 对在 myDataItems){}
  • 我尝试了类似于codesparkle 的解决方案,但它不起作用。我只是在寻找要在文本框中显示的对,例如:You have selected "key" at price "value"
  • Scott 显示您尝试过的代码.. 您需要在 foreach 循环中执行此操作向我们展示您尝试过的示例,但您说它不起作用.. 将代码粘贴到您的问题中
  • 有没有办法只从每对中选择双倍?

标签: c# forms dictionary textbox output


【解决方案1】:

一个简单的方法:

var lines = myDataItems.Select(kv => kv.Key + ": " + kv.Value.ToString());
txtOutput.Text = string.Join(Environment.NewLine, lines);

记得加using System.Linq;

【讨论】:

  • 更好的解决方案 Linq 就像 google "It's your friend.. :)
  • 顺便说一句,你不需要ToString()
  • @codesparkle:我知道,但这并没有什么坏处,并且表明该值最初不是字符串,并且可以更轻松地更改双精度的格式,例如 f.e. kv.Value.ToString("N2").
  • 我认为我需要阅读 LINQ。我对此很陌生。感谢小伙子们的帮助:)
【解决方案2】:
txtOutput.Lines = myDataItems.Select(x => x.Key + " : " + x.Value).ToArray();

【讨论】:

    猜你喜欢
    • 2016-09-23
    • 2022-01-13
    • 2011-02-04
    • 2016-08-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多