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

TA貢獻1887條經驗 獲得超5個贊
標準 ListBox 控件不是為這樣的格式而設計的,它基本上只是文本 - 并且它不知道如何將字符串的內容與標簽對齊,也不應該!
相反,您需要一個適合這項工作的控件。它稱為DataGridView。如果您搜索,網上有很多教程可以向您展示如何使用它。
- 2 回答
- 0 關注
- 166 瀏覽
添加回答
舉報