首页 > 解决方案 > C# 将列表输出到 Winforms 上的 DataGridView 或 ListView

问题描述

我正在慢慢完成一个项目并且遇到了一个问题,我需要两个建议来选择最佳的行动方案。

我正在使用一个类型为边的三角形,其类如下

public class Sides
{
    //These are the encapsulated data 
    private int intAdj;         //adjacent
    private int intOpp;         //opposite
    private Double doubleHypot; //hypotenuse

    //This is the constructor 
    public Sides(int intAdj, int intOpp, Double doubleHypot)
    {
        //less confusion when the same name is used
        this.intAdj = intAdj;
        this.intOpp = intOpp;
        this.doubleHypot = doubleHypot;
    }

    //Getters and Setters
    public int IntAdj { get; set; }
    public int IntOpp { get; set; }
    private Double DoubleHypot { get; set; }
    }
}

这是列表的声明

private List<Sides> listTriangle;

初始化如下:

listTriangle = new List<Sides>();   //Creates the list of type Sides

这是我调用计算和输出的地方

PerformCalc(intTriangleSize);
OutputList();

这是我执行计算并添加到列表中的地方

private void PerformCalc(int intTriangleSize)
{
    //This is where the calculations occur
    for (int indexAdj = 1; indexAdj < (intTriangleSize + 1); indexAdj++)
    {
        for (int indexOpp = 1; indexOpp < (intTriangleSize + 1); indexOpp++)
        {
            doubleHypotenuse = doubHypot(doubleSquare(indexAdj), doubleSquare(indexOpp));
            listTriangle.Add(new Sides(indexAdj, indexOpp, doubleHypotenuse));
        }
    }
}

我现在正试图通过 datagridview 或 listview 输出这个列表。它们看起来像这样:

输入图像

输出图像如下

输出图像

我正在使用的代码如下

private void OutputList()
{
    DataTable myDataTable = new DataTable();

    myDataTable.Columns.Add("Adjacent", System.Type.GetType("System.Int16"));
    myDataTable.Columns.Add("Opposite", System.Type.GetType("System.Int16"));
    myDataTable.Columns.Add("Hypotenuse", System.Type.GetType("System.Double"));

    foreach (Sides myTriSides in listTriangle)
    {
        myDataTable.Rows.Add();
    }
    dataGridView1.DataSource = myDataTable;


    for (int indexList = 0; indexList < listTriangle.Count(); indexList++)
    {
        listView1.Items.Add(listTriangle[indexList].IntAdj.ToString(),
        listTriangle[indexList].IntOpp.ToString(),
        listTriangle[indexList].DoubleHypot.ToString()) ;
    }
}

我知道代码存在问题,但我不确定代码问题出在哪里。

根据我的研究,它与建议 datagridview 和 listview 的人平分秋色。我可以得到建议,在这种情况下使用哪个更好的视图。所有帮助和建议将不胜感激。

标签: c#listwinformslistviewdatagridview

解决方案


推荐阅读