2014-09-25 176 views
-2

我得到了一个datagridview,它将数据传输到其他datagridview,我希望得到一些帮助。它看起来应该是工作,但是我得到一个错误,说该字符串不能转换为布尔值。 datagridview中的复选框就是这种情况(用户必须点击他们想要复制的行的复选框。) 我知道如何将值转换为字符串等,但我似乎无法得出这个想法。谁能帮我? 这是在副本按钮的点击会发生什么:将字符串转换为布尔值

For i As Integer = 0 To DGV1.Rows.Count - 1 
     If DGV1.Rows(i).Cells(4).Value = True Then 
      DGV2.Rows.Add(DGV1.Rows(i).Cells(3).Value, _ 
      DGV1.Rows(i).Cells(2).Value, _ 
      DGV1.Rows(i).Cells(3).Value, _ 
      DGV1.Rows(i).Cells(4).Value, _ 
      DGV1.Rows(i).Cells(6).Value) 
      '2 = voer, 3 =voerid, 4= drogestof, 6 = (voer)keukenlocatie 
     End If 

DGV1是数据必须来自数据网格,所以小区4是复选框。 DGV2是数据必须到达的数据网格。

更新: 现在我使用这段代码,这让我有点进一步。

Private Sub Button1_Click_2(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnkopieren.Click 
    For i As Integer = 0 To DGV1.Rows.Count - 1 
     If CBool(DGV1.Rows(i).Cells(4).Value) Then 
      'If DGV1.Rows(i).Cells(4).Value = True Then 
      DGV2.Rows.Add(DGV1.Rows(i).Cells(0).Value, _ 
      DGV1.Rows(i).Cells(1).Value, _ 
      DGV1.Rows(i).Cells(2).Value, _ 
      DGV1.Rows(i).Cells(3).Value) 
      '2 = voer, 3 =voerid, 4= drogestof, 6 = (voer)keukenlocatie 
     End If 
    Next 

End Sub 

我得到的错误“无效Operationexception了未处理” Apparantly,他们不喜欢它,当我想选择的数据从1个datagridview的转移到其他绑定datagridview的。有没有解决方案?我试图自己修复它并使用Google搜索,但没有结果。

+1

所以你想'drogestof'转换为'布尔',怎么样? – 2014-09-25 07:16:06

+1

你的意思是测试CheckBox,而不是第4列? – 2014-09-25 08:28:15

+0

你好,不,不是最漂亮的。 DGV1是数据必须来自的数据网格,因此cell4是复选框。 DGV2是数据必须到达的数据网格。 – Marco 2014-09-25 12:13:51

回答

0

好像你想复制选中的行。所以你应该用复选框来验证它是否被选中。如果您的第一列是复选框类型,那么它是单元格(0)。如下所示可能修改您的代码将适用于您。

  For i As Integer = 0 To DGV1.Rows.Count - 1 
      If CBool(DGV1.Rows(i).Cells(0).Value) Then 
       DGV2.Rows.Add(DGV1.Rows(i).Cells(3).Value, _ 
       DGV1.Rows(i).Cells(2).Value, _ 
       DGV1.Rows(i).Cells(3).Value, _ 
       DGV1.Rows(i).Cells(4).Value, _ 
       DGV1.Rows(i).Cells(6).Value) 
       '2 = voer, 3 =voerid, 4= drogestof, 6 = (voer)keukenlocatie 
      End If 
      Next 
+0

你好,谢谢!我尝试使用你的代码,并删除了双(它的代码填充单元格3两次),但我得到一个'ArgumentOutOfRange异常' – Marco 2014-09-25 12:18:26

+0

我没有添加单元格3两次,其代码只在我建议你使用复选框列转换为布尔值。对于你得到的例外,这意味着你正在访问一些不可用的单元格。尝试检查Cells.Count,然后调试您的代码。 – prem 2014-09-25 13:34:38

+0

你好,这不是我的错。 ;)我会重新计算单元格(尽管我很确定它是正确的),看看我能否修复它。我发现了一些其他的解决方案,但他们都是复制到一个空的dgv,所以对我来说不是很有用。 – Marco 2014-09-29 07:33:28

0

虚假字符串的值必须为真。也许一个数字字符串(0,不是0,-1,不是-1)或一个数字。

这是一个实验。

A = 0 
B = 1 
C = -1 
D = 55 

msgbox A & " " & B & " " & C & " " & D 
msgbox cbool(A) & " " & cbool(B) & " " & cbool(C) & " " & cbool(D) 
msgbox cbool(cstr(A)) & " " & cbool(cstr(B)) & " " & cbool(cstr(C)) & " " & cbool(cstr(D)) 
msgbox cbool("true") & " " & cint(vbtrue) 
msgbox cbool("false") & " " & cint(vbfalse) 
msgbox cbool("cat") 

你会看到虚假= 0和真<> 0和猫是一个错误。

+0

哇,好客。 :P(不,我并不是那么低调的)。至于你的代码,我发现它会打开一个消息框,检查是否有错误,对吗? – Marco 2014-09-29 07:31:57

+0

仍然存在的是我的问题。不幸的是我还没有解决它。 – Marco 2014-09-29 11:03:58

+0

嗯,好笑,现在他们也低估了我的主要问题。为什么? – Marco 2014-10-01 11:14:07