简体   繁体   English

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

[英]How can I assign different elements in an array to different text boxes C#

I have an array with 100 elements that I want to assign to 100 text boxes in a windows form. 我有一个包含100个元素的数组,我想分配给Windows窗体中的100个文本框。 The issue is the array is not sorted in a useful manner so a for loop won't work. 问题是数组未以有用的方式排序,因此for循环将无法工作。

The only thing I can think of is to write 100 lines of code that assign the correct array element to the correct textbox but that seems like a horrible way of doing it. 我唯一想到的就是编写100行代码,将正确的数组元素分配给正确的文本框,但这似乎是一种可怕的方法。

A quick example of the how the array is formatted is below: 下面是如何格式化数组的快速示例:

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

As you can see, Air Temperature is split up, further down the array are Air Temperature #2 values, but I want all Temperature data to be together. 如您所见,“空气温度”被拆分,在数组的更下方是“空气温度2”值,但我希望所有“温度”数据都在一起。

Create a class which represent your data in one item 创建一个类,在一个项目中代表您的数据

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

Instead of textboxes use DataGridView control. 代替文本框,使用DataGridView控件。
Create collection of data and add collection as DataSource to the 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;

If you want sort data before adding to DataGridView use LINQ to sort it 如果要在添加到DataGridView之前对数据进行排序,请使用LINQ对其进行排序

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

DataGridView will generate rows for every item in the array, and columns for every property in the class MeasureData . DataGridView将为数组中的每个项目生成行,并为MeasureData类的每个属性生成列。
If you want to show only some of the properties, then create columns manually with DataGridViewColumn.DataPropertyName = "NameOfThePropertyYouWantToShow" and remember set DataGridView.AutoGenerateColumns = false , because by default it is true 如果只想显示某些属性,请使用DataGridViewColumn.DataPropertyName = "NameOfThePropertyYouWantToShow"手动创建列,并记住设置DataGridView.AutoGenerateColumns = false ,因为默认情况下为true

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM