所以我正在创建一个货币转换器程序,它从云端获取一大堆国家/地区的实时货币信息,并在列表视图框中显示实时数据以及转换。我已在业务层中正确设置了所有内容(使用JSON),并且在运行时,我成功查看了数据。因此我无法获取该数据并将其加载到列表视图框中。这是表单的代码......
namespace BigBirtha
{
public partial class Form1 : Form
{
private ExchangeRateService exchangeRates;
public Form1()
{
InitializeComponent();
exchangeRates = new ExchangeRateService();
}
private void Form1_Load(object sender, EventArgs e)
{
var exchange = exchangeRates.GetExchangeRates();
countryListView.Items.AddRange(exchange.ToArray()); //Believe this is the issue
}
}
}
ExchangeRateService使用JSON并通过一个工作正常的列表返回费率。从云中提取172个项目,每个项目返回CurrencyCode和Rate。
我只是想把这些项目填充到一个名为countryListView的列表视图框中,其中有两列名为countryHeader和rateHeader。
获取错误代码CS1503参数1:无法从'BigBirtha.models.ExchangeRate []'转换为'System.Windows.Forms.ListViewItem []'
P.S。如果它有帮助,这是我创建的另一个有助于提取数据的类。
namespace BigBirtha
{
class ExchangeRateService
{
private const string EXCHANGE_URL = ""; //removed this
public List<ExchangeRate> GetExchangeRates()
{
List<ExchangeRate> rates = new List<ExchangeRate>();
using (WebClient client = new WebClient())
{
var json = client.DownloadString(EXCHANGE_URL);
var response = JsonConvert.DeserializeObject<ExchangeRatesResponse>(json);
foreach (var rate in response.Rates)
{
var exchangeRate = new ExchangeRate
{
CurrencyCode = rate.Key,
Rate = rate.Value
};
rates.Add(exchangeRate);
}
}
return rates;
}
}
}
已经给出了尝试此代码的建议......
var listViewItemsOfExchangeRates= new ListViewItem(exchange.ToArray();
countryListView.Items.Add(listViewItemsOfExchangeRates);
收到以下非常相似的错误....
CS1503 Argument 1: cannot convert from `"System.Collections.Generic.List<BigBirtha.models.ExchangeRate>" to "string"`
感谢阅读!
答案 0 :(得分:1)
它正是它所说的,这意味着您只能向listItem
控件添加listview
类型的集合,并且您正在尝试添加类型为array
的集合。
我建议您查看此MSDN文章,从此处https://msdn.microsoft.com/en-us/library/system.windows.forms.listview(v=vs.110).aspx
为列表视图控件设置数据源基于MSDN文章的示例代码
var listViewItemsOfExchangeRates= new ListViewItem(exchange.ToArray());
countryListView.Items.Add(listViewItemsOfExchangeRates);
未经测试,请相应修改
根据评论进行修改 - 以上代码与winforms相关
最后我知道并使用winforms,ListView不支持数据绑定。但是,可以对新的WPF ListBox进行数据绑定。或者使用listBox而不是
本文介绍如何将数据绑定功能添加到从WinForms ListView继承的自定义控件:https://www.codeproject.com/kb/list/listview_databinding.aspx