c# - wpf中列表框的值总和

标签 c# wpf textbox listbox

我在 WPF 中有一个 TextBox 和一个 ListBoxListBox (listAmount) 包含一些值,我想要那个 TextBox (txtTotalAmount) 中的这些值的总和。

我目前正在使用这段代码:

int i = 0;
int sum = 0;

for (i = 0; i < listAmount.Items.Count; i++)
{
    sum = sum + Convert.ToInt32(listAmount.Items[i]);
}

txtTotalAmount.Text = sum.ToString();

我得到这个错误:

Unable to cast object of type 'System.Windows.Controls.ListBoxItem' to type 'System.IConvertible'

我会很感激你的。

最佳答案

错误消息说明 listAmount.Items[i]返回 ListBoxItem 类型的实例.该类派生自 ContentControl ,这就是为什么它的 Content property应包含您要查找的实际值。

因此,尝试:

sum += Convert.ToInt32(((ListBoxItem)listAmount.Items[i]).Content);

类型转换是必要的,因为 indexer of ItemCollection 输入为 object .


也就是说,您是否尝试过使用集合(例如 ObservableCollection<int> )来存储您的值并将该集合设置为 ItemsSource 你的列表框?然后,您可以直接从集合中获取整数值并对其求和,而无需进行任何转换。

将此声明添加到您的窗口以存储整数值列表:

private readonly ObservableCollection<int> values = new ObservableCollection<int>();

然后,在您调用 InitializeComponents 之后, 分配 ItemsSource属性:

listAmount.ItemsSource = values;

values 中添加和删除您的值随时列出;列表的内容将始终反射(reflect)在列表框中。

为了检索这些值的总和,您可以简单地使用以下命令:

int sum = values.Sum();

请注意 System.Linq namespace需要包含在 using 中让它工作的指令,或者 Sum method不会被发现。)

关于c# - wpf中列表框的值总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17880399/

相关文章:

c# - 获取电话号码设置

c# - 绑定(bind)到 WPF 中元素相对于父级的位置

c# - 在 Roslyn 与 Microsoft.CodeAnalysis 中添加元数据引用

c# - 使用 MVVM 选择并复制 WPF 文本框中的文本

c# - WPF 中的并行任务

c# - 如何将所有列作为属性的 DataTable 导出到 Xml?

wpf - 如何在 WPF 中获取 "DoEvents"?

javascript - 在未聚焦时在文本框中迭代写入单词,并在聚焦时停止

c# - 如何通过屏幕键盘与其他软件进行通信?

HTML + CSS 文本容器调整