读取列表框中列内的文件

我正在尝试读取 csv 文件,以便以行的形式获取并显示在列表框中,但我无法排列固定列以使其处于可读形式。

我尝试过使用多列属性,但仍然没有运气。

http://img.mukewang.com/64aa126600016e2906510406.jpg

我期望输出是这样的:

http://img4.mukewang.com/64aa12720001ee2805580361.jpg

编辑 :


这是我填充列表框的代码


foreach (Student person in _result)

            {

                _listResults.Items.Add(person.ToString());

            }

这是 bean 类:


    class Student

{

    #region FIELDS


    private String _lastName, _firstName;

    private int _exam1, _exam2, _exam3, _finalExam;


    public string LastName

    {

        get

        {

            return _lastName;

        }


        set

        {

            _lastName = value;

        }

    }


    public string FirstName

    {

        get

        {

            return _firstName;

        }


        set

        {

            _firstName = value;

        }

    }


    public int Exam1

    {

        get

        {

            return _exam1;

        }


        set

        {

            _exam1 = value;

        }

    }


    public int Exam2

    {

        get

        {

            return _exam2;

        }


        set

        {

            _exam2 = value;

        }

    }


    public int Exam3

    {

        get

        {

            return _exam3;

        }


        set

        {

            _exam3 = value;

        }

    }


    public int FinalExam

    {

        get

        {

            return _finalExam;

        }


        set

        {

            _finalExam = value;

        }

    }



    #endregion


    #region CONSTRUCTOR

    public Student()

    {


    }


    public Student(string firstName, string lastName, int exam1, int exam2, int exam3, int final)

    {

        this._firstName = firstName;

        this._lastName = lastName;

        this._exam1 = exam1;

        this._exam2 = exam2;

        this._exam3 = exam3;

        this._finalExam = final;


    }


    #endregion


    #region METHODS


    public void _CalculateAverage(out float average)

    {

        average = _exam1 + _exam2 + _exam3 + _finalExam / 400;


    }


喵喔喔
浏览 126回答 2
2回答

拉丁的传说

正如我们已经告诉您的,当您希望输出在列中“对齐”时, ListBox并不是真正正确的控件。ListBox 中没有规定将单行文本格式化为列。ListView和DataGridView之类的控件更适合此任务,因为它们具有列的概念,并且您可以以自然的方式使用它们。但是,如果您确实想使用 ListBox 并拥有列,那么您需要做出妥协。您不能使用宽度可变的字体,因为在这些字体中,字母 W 和空格的宽度不同,这会导致计算正确的列大小变得混乱(而且我们甚至没有开始讨论如何计算所需的空格)与不同的文本进行正确的左/右对齐)。折衷方案需要使用固定宽度字体(或等宽字体或固定间距字体)。有很多可供选择。(Consolas是我的最爱)。将列表框的 Font 属性设置为您选择的固定宽度字体后,您需要决定如何调整列的大小。在下面的示例中,我决定名字列包含 20 个字符,姓氏列包含 30 个字符,投票列各包含 8 个字符。因此,您对 ToString 方法的重写将是:public override string ToString(){    return $"{_firstName,-20} {_lastName,-30} " +             "{_exam1,8} {_exam2,8} {_exam3,8} {_finalExam,8}";}变量名称后面的那些正数和负数是对齐值,如格式字符串组件中所述(注意,这是一个很大的主题,但值得阅读和理解)

慕工程0101907

标准 ListBox 控件不是为这样的格式而设计的,它基本上只是文本 - 并且它不知道如何将字符串的内容与标签对齐,也不应该!相反,您需要一个适合这项工作的控件。它称为DataGridView。如果您搜索,网上有很多教程可以向您展示如何使用它。
打开App,查看更多内容
随时随地看视频慕课网APP