【发布时间】:2014-04-29 13:19:03
【问题描述】:
在我的 c# 程序中,我有一个列表视图点击事件。这是我的代码:
private void factorLV_Click(object sender, EventArgs e)
{
try
{
if (listview1.SelectedItems.Count == 0)
return;
listview2.Items.Clear();
listview2.Show();
DataClasses1DataContext db = new DataClasses1DataContext();
List<ReportFactorResult> list = db.ReportFactor(Convert.ToInt32(listview1.SelectedItems[0].SubItems[0].Text)).ToList<ReportFactorResult>();
foreach (ReportFactorResult val in list)
{
ListViewItem lst = new ListViewItem((Convert.ToString(listview2.Items.Count + 1)).ToString());
lst.SubItems.Add(val.storeName);
lst.SubItems.Add(val.Code.ToString());
lst.SubItems.Add(val.factorNumber.ToString());
lst.SubItems.Add(val.salePrice.ToString());
listview2.Items.Add(lst);
}
}
catch(Exception ex)
{
messageBox.show(ex.message);
}
}
当我在 Visual Studio 中运行程序时,它可以正常工作。但是当我在 Visual Studio 环境中运行 .exe 时,它遇到了这个异常:
指定的演员表无效
下图显示了没有 try catch 的异常。当我使用 try catch 时,我也收到“Specified cast...”消息。
http://i59.tinypic.com/2qkl3qg.png
另外,在 Visual Studio 中,我的程序远程连接到 sql server 管理,但在 Visual Studio 外部,我连接到 SQLExpress 中的已恢复数据库。
【问题讨论】:
-
我猜在 Visual Studio 之外你有不同的数据,
Convert.ToInt32()失败了。我想在所选项目中,子项目索引 0 文本不是有效的 int。 -
为什么 ToString() 两次?
(Convert.ToString(listview2.Items.Count + 1)).ToString() -
@GrantWinney:no 因为是windows异常,只显示功能。
-
ReportFactor返回什么?我想这就是问题所在。发布完整的错误消息。 -
@Majid 为了避免这种混淆,最好更新您的问题。我们现在正在查看与您的不同的代码。这让帮助你变得非常困难。