仅在循环中显示消息框一次vb.net

问题描述:

我有这个循环,每次条件为真时都会弹出一个消息框。仅在循环中显示消息框一次vb.net

For i = 0 To DataGridView1.Rows.Count - 1 
     Dim c As Boolean 
     c = DataGridView1.Rows(i).Cells(0).Value 
     If c = True Then 
      cmd3.Connection = con 
      con.Open() 

      cmd3.CommandText = "insert into student select * from stud where studentno = '" & DataGridView1.Rows(i).Cells(1).Value.ToString & "' delete from stud where studentno = '" & DataGridView1.Rows(i).Cells(1).Value.ToString & "'" 
      dr3 = cmd3.ExecuteReader() 
      MessageBox.Show("Account approved.") 
      con.Close() 
     Else 

     End If 
    Next 

该消息框显示的次数与选中的行数一样多。我只想展示一次。我将邮箱重新定位到任何地方,但它不起作用。我搜查了但没有拿出答案。 我试图将它移到循环外,但问题是,即使条件为假,消息框仍然显示。

谢谢!

+0

将它移到循环之外?也许根据至少添加一条记录的标志进行射击。 – Plutonix

+0

我试图把它移到循环之外,问题是,消息框甚至显示条件是错误的 – ABCDE

+0

*基于至少添加了一条记录的标志,引发火灾* – Plutonix

一种方法是创建一个成功批准的计数器和另一个不成功批准的计数器,并在完成循环后显示这些计数器。计数器在循环中递增,具体取决于每次迭代中布尔值c的结果。

Dim iSuccessCount As Integer 
Dim iFailedCount As Integer 

For i = 0 To DataGridView1.Rows.Count - 1 
    Dim c As Boolean 
    c = DataGridView1.Rows(i).Cells(0).Value 

    If c = True Then 
     iSuccessCount +=1 
     cmd3.Connection = con 
     con.Open() 

     cmd3.CommandText = "insert into student select * from stud where studentno = '" & DataGridView1.Rows(i).Cells(1).Value.ToString & "' delete from stud where studentno = '" & DataGridView1.Rows(i).Cells(1).Value.ToString & "'" 
     dr3 = cmd3.ExecuteReader() 
     con.Close() 
    Else 
     iFailedCount += 1 
    End If 
Next 

Dim sb As New StringBuilder 

sb.Append(iSuccessCount.ToString) 
sb.Append(If(iSuccessCount = 1, " account was ", " accounts were ")) 
sb.Append("approved.") 
sb.Append(Environment.NewLine) 
sb.Append(iFailedCount.ToString) 
sb.Append(If(iFailedCount = 1, " account was ", " accounts were ")) 
sb.Append("not approved.") 

MessageBox.Show(sb.ToString)