Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/300.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在C中格式化列表框的字符串#_C#_Listbox_String Formatting - Fatal编程技术网

C# 在C中格式化列表框的字符串#

C# 在C中格式化列表框的字符串#,c#,listbox,string-formatting,C#,Listbox,String Formatting,首先,我要说列表框是类项目的一个需求。我只是想在将字符串添加到列表框之前格式化一个字符串,使它看起来更漂亮。我对Product.ToString()有一个重写,用于格式化字符串,但当我将其添加到列表框时,格式会消失 ToString产品中的方法类: public override string ToString() { string newFormat = string.Format("{0,0}{1,20}", Name, Price); return newFormat; }

首先,我要说列表框是类项目的一个需求。我只是想在将字符串添加到列表框之前格式化一个字符串,使它看起来更漂亮。我对
Product.ToString()
有一个重写,用于格式化字符串,但当我将其添加到列表框时,格式会消失

ToString
产品中的方法类:

public override string ToString()
{
    string newFormat = string.Format("{0,0}{1,20}", Name, Price);
    return newFormat;
}
更新方法:

protected void updateLists()
{
    availableProducts_LB.Items.Clear();
    foreach (Product p in customer.AvailableProducts)
        availableProducts_LB.Items.Add(p.ToString());

    shoppingCart_LB.Items.Clear();
    foreach (Product p in customer.shoppingCartList)
        shoppingCart_LB.Items.Add(p.ToString());
}

只需将产品实例直接添加到列表框(不要调用ToString):

列表框将使用Product.ToString方法显示列表中的项目


然后在ToString中的return语句上放置断点,以确保它是您期望的值。

当您在return newFormat上放置断点时;NewFormat的值是多少指定输出os字符串的外观。仅供参考-您只需执行
项。添加(p)
,列表框将为您调用
ToString()
。这还需要更多。你发布的内容应该可以正常工作。我已经检查了代码。对我来说,代码没有问题。是的,这样更好。但是,如果调用
ToString()
不起作用,这也不会起作用。但是,这会产生与手动调用
ToString()
不同的结果吗?@Bobson:您看到的结果不会有什么不同,但在内部,您可以在与列表框交互时从列表框中获取实际的产品项,而不是表示产品的字符串。tostring返回的是正确的格式,但是,listbox没有显示该格式,而是显示没有添加空格的格式。
availableProducts_LB.Items.Clear();
foreach (Product p in customer.AvailableProducts)
    availableProducts_LB.Items.Add(p);