如何在C#的列表框中填充几行字符串

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (59)

所以我一直在尝试在列表框中显示我的字符串行。但是,无论我尝试什么,每个字符串的填充似乎搞砸了。我该怎么办?有人知道在列表框中正确填充字符串的方法吗?

我尝试改变我目前使用的格式化功能的值,因为它以前对我有效。我将值从+ ve更改为-ve,但这一切都没有加起来。它没有按照它应该的方式运作。

这是我使用的格式代码:

format = "{0, -30}{1, -30}{2, -30}{3, -30}{4, -30}{5, -30}";
listBoxLandowners.Items.Add(String.Format(format, "Landowner ID", "First Name", "Last Name", "City", "Street", "Street Number"));

SQL.selectQuery("select * from Landowner", null, null);
if(SQL.read.HasRows)
{
     while(SQL.read.Read())
                {
                    _landID = SQL.read[0].ToString();
                    _fName= SQL.read[1].ToString();
                    _lName = SQL.read[2].ToString();
                    _city = SQL.read[3].ToString();
                    _street = SQL.read[4].ToString();
                    _streetNum = SQL.read[5].ToString();
                    listBoxLandowners.Items.Add(String.Format(format, _landID, 
                    _fName, _lName,_city, _street, _streetNum));
                }
            }

实际结果:

我希望它能正确,整齐地填充,但无法使其工作。非常感谢帮助。

提问于
用户回答回答于

在WinForms中,ListBox不是一个非常好的多列控件。

尝试在详细信息模式下使用ListView。

var listviewLandOwners = new ListView();
listviewLandOwners.View = View.Details;

在此模式下,第一列由TextListViewItem 的属性控制。第二列由SubItems[0]。第三是SubItems[1]。等等。所以你的循环可能如下所示:

while(SQL.read.Read())
{
    var newItem = listviewLandowners.Items.Add(SQL.read[1].ToString());
    newItem.SubItems.Add(SQL.read[2].ToString());
    newItem.SubItems.Add(SQL.read[3].ToString());
    newItem.SubItems.Add(SQL.read[4].ToString());
    newItem.SubItems.Add(SQL.read[5].ToString());
}

扫码关注云+社区

领取腾讯云代金券