为什么在替换 vb 中的 datagridview 值时出现错误?

Why do I get error when replacing datagridview values in vb?

我有一个数据网格视图,其中包含一个导入的 excel 文件。我还有一个 MySQL 数据库,其中包含我想在我的 datagridview 中替换的值以及将替换以前值的值。

这是我的数据库:

我想要完成的是在 datagridview 单元格内循环并找到 Content 字段内的值并将其替换为 Convert 字段中的相应值。例如,所有 1 将替换为 11,所有 Name 1 将替换为 Std Name 1,所有 18 将替换为 18 Years Old。

我使用以下代码:

MysqlQuery = "SELECT * FROM contents"
    MysqlComm = New MySqlCommand(MysqlQuery, MysqlConn)
    MysqlReader = MysqlComm.ExecuteReader

    While MysqlReader.Read
        Dim content = MysqlReader.GetString("Content")
        Dim convert = MysqlReader.GetString("Convert")
        For Each row As DataGridViewRow In dgvFile.Rows
            For Each cell As DataGridViewCell In row.Cells
                If cell.Value IsNot Nothing Then
                    If cell.Value.ToString = content.ToString Then
                        cell.Value = convert.ToString
                    End If
                End If
            Next
        Next
    End While

        MessageBox.Show("File successfully converted")

此代码转换 1 = 11 和 Name 1 = Std Name 1 但不转换 18 = 18 岁并显示此错误。

问题 为什么会出现此错误,我该如何解决?非常感谢您的回答和建议。谢谢。 :)

更新 对于那些看不到错误消息的人,这里是。

The following exception occurred in the DataGridView:

System.Exception: 18 Years Old is not a valid value for Double, --->
System.FormatException: Input string was not in a correct format.
 at System.Number.PraseDouble(String value, NumberStyles options,
NumberFormatInfo numfmt)
 at System.Double.Parse(String s, NumberStyles style, IFormatPRovider     provider)
 at System.ComponentModel.DoubleConverter.FromString(String value,   NumberFormatInfo formatInfo)
 at     System.ComponentModel.BaseNumberConverter.ConvertFrom(ITypeDescriptorContext  context, CultureInfo culture, Object value)
--- End of inner exception stack trace ---
 at    System.ComponentModel.BaseNumberConverter.ConvertFrom(ITypeDescriptorContext   context, CultureInfo culture, Object value)
 at System.ComponentModel.TypeConverter.ConvertFrom(Object value)
 at  System.Windows.Forms.DataGridView.DataGridViewDataConnection.PushValue(Int32  boundColumnIndex, Int32 columnIndex, Int32 rowIndex, Object value)

To replace this default dialog please handle the DataError event

似乎是导致您出错的行:

cell.Value = convert.ToString

可能是因为列类型是<> String(可能是integer或double)。

您可以将值放入正确的类型中,而不是在设置值时执行 ToString

另一种选择是制作网格的所有列类型String。但是你必须考虑到必须更改列的排序(你需要找到排序事件并在排序时将值转换为正确的类型)。