亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

讀取列表框中列內的文件

讀取列表框中列內的文件

C#
喵喔喔 2023-07-09 09:49:58
我正在嘗試讀取 csv 文件,以便以行的形式獲取并顯示在列表框中,但我無法排列固定列以使其處于可讀形式。我嘗試過使用多列屬性,但仍然沒有運氣。我期望輸出是這樣的:編輯 :這是我填充列表框的代碼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;    }
查看完整描述

2 回答

?
拉丁的傳說

TA貢獻1789條經驗 獲得超8個贊

正如我們已經告訴您的,當您希望輸出在列中“對齊”時, 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}";

}

變量名稱后面的那些正數和負數是對齊值,如格式字符串組件中所述(注意,這是一個很大的主題,但值得閱讀和理解)



查看完整回答
反對 回復 2023-07-09
?
慕工程0101907

TA貢獻1887條經驗 獲得超5個贊

標準 ListBox 控件不是為這樣的格式而設計的,它基本上只是文本 - 并且它不知道如何將字符串的內容與標簽對齊,也不應該!

相反,您需要一個適合這項工作的控件。它稱為DataGridView。如果您搜索,網上有很多教程可以向您展示如何使用它。

查看完整回答
反對 回復 2023-07-09
  • 2 回答
  • 0 關注
  • 166 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號