C# C转换无效

C# C转换无效,c#,listview,exception,C#,Listview,Exception,在我的c程序中,我有一个listview单击事件。以下是我的代码: private void factorLV_Click(object sender, EventArgs e) { try { if (listview1.SelectedItems.Count == 0) return; listview2.Items.Clear(); listview2.Show(); DataClasses1DataContext db = new Da

在我的c程序中,我有一个listview单击事件。以下是我的代码:

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时,我也得到了指定的演员阵容。。。信息


另外,在visual studio中,我的程序远程连接到sql server管理,但在visual studio外部,我连接到了SQLExpress中的还原数据库。

在显示堆栈跟踪后,您将更清楚地了解问题所在

当前的问题是将sql字段映射到ReportFactoryResult。特别是ReportFactoryResult有一个int64字段,该字段在数据库中具有不同的字段类型


如需进一步帮助,我们需要查看ReportFactoryResult和您的DB方案。但是,如果您查看ReportFactoryResult类并在其中搜索所有int64字段,您可能会自己找到有问题的字段。

我猜在visual studio之外,您有不同的数据,转换.ToInt32失败。我假设在所选项目中,子项目索引0文本不是有效的int。为什么要字符串两次?Convert.ToStringlistview2.Items.Count+1。ToString@GrantWinney:否,因为它是windows异常。它仅显示函数。ReportFactor返回什么?我想这就是问题所在。发布完整的错误消息。@Majid为了避免这种混淆,最好更新您的问题。我们现在看到的代码与您的不同。这使得帮助你变得非常困难。