如何将数组中的不同元素分配给不同的文本框C#

时间:2016-12-16 16:12:18

标签: c# arrays winforms

我有一个包含100个元素的数组,我希望将它们分配给Windows窗体中的100个文本框。问题是数组没有以有用的方式排序,因此for循环不起作用。

我唯一能想到的就是编写100行代码,将正确的数组元素分配给正确的文本框,但这似乎是一种可怕的方式。

如何格式化数组的快速示例如下:

10  Air Temperature #1,           1 Minute Run Average     Celsius  Minute 59-60
11  Humidity,                     1 Minute Run Average           %  Minute 59-60
12  Air Temperature #1,          60 Minute Run Average     Celsius  Minute 00-60
13  Air Temperature #1,      Max(1 Minute Run Average)     Celsius  Minute 00-60
14  Humidity,                Max(1 Minute Run Average)           %  Minute 00-60
15  Air Temperature #1,      Min(1 Minute Run Average)     Celsius  Minute 00-60
16  Humidity,                Min(1 Minute Run Average)           %  Minute 00-60

正如您所看到的,气温被分开,阵列的下方是气温#2值,但我希望所有温度数据都在一起。

1 个答案:

答案 0 :(得分:0)

创建一个在一个项目中表示数据的类

class MeasureData
{
    public int Id { get; set; }
    public string Description { get; set; }
    public string AverageData { get; set; }
    public string Unit { get; set; }
    public string Minutes{ get; set; }
}

而不是文本框使用DataGridView控件 创建数据集合并将集合DataSource添加到DataGridView

var data = new MeasureData[]
{
    new MeasureData
    {
        Id = 10,
        Description = "Air Temperature #1",
        AverageData = "1 Minute Run Average",
        Unit = "Celsius",
        Minutes = "Minute 59-60"
    },
    new MeasureData
    {
        Id = 11,
        Description = "Humidity",
        AverageData = "1 Minute Run Average",
        Unit = "%",
        Minutes = "Minute 59-60"
    }
    // and so on
};

myDataGridView.DataSource = data;

如果您想在添加到DataGridView之前想要排序数据,请使用LINQ对其进行排序

var sortedData = data.OrderBy(item => item.Id).ToArray();

DataGridView将为数组中的每个项生成行,并为类MeasureData中的每个属性生成列。
如果您只想显示部分属性,请使用DataGridViewColumn.DataPropertyName = "NameOfThePropertyYouWantToShow"手动创建列,并记住设置DataGridView.AutoGenerateColumns = false,因为默认情况下为true