我遇到了datagridview
的问题。我试图创建一个允许我运行某些测试的程序。我想在datagridview
中列出它们。然后使用计数器我希望程序通过活动服务器进程并运行它们。在概述中,我想通过着色我添加的单元来可视化进程是否处于活动状态。我以前做过这个并且使用了相同的代码,但这次它似乎没有用。您可以在此处找到表单load
事件的代码。谁能告诉我我做错了什么?
Private Sub frmServerProcesses_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Dim strSQL As String
Dim oDR As SqlClient.SqlDataReader = Nothing
'bij het opstarten moet de stopknop disabled zijn
btnServerStop.Enabled = False
btnServerStart.Enabled = True
statServerProcesseslbl.Text = "Server ready"
'opvragen van de processen
strSQL = " SELECT * FROM SERVERPROCESSES"
Dim connection As New SqlConnection(SQLConnectstring)
Dim dataadapter As New SqlDataAdapter(strSQL, connection)
Dim ds As New DataSet()
connection.Open()
dataadapter.Fill(ds, "SERVERPROCESSES")
connection.Close()
dgvServerProcesses.DataSource = ds
dgvServerProcesses.DataMember = "SERVERPROCESSES"
dgvServerProcesses.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells
dgvServerProcesses.Columns("LASTRUNDATE").AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill
'lege row die normaal wordt toegevoegd verwijderen
dgvServerProcesses.AllowUserToAddRows = False
'extra kolom toevoegen voor kleuren van actief of niet
dgvServerProcesses.Columns.Add("TEST", "TEST")
For i As Integer = 1 To dgvServerProcesses.Rows.Count - 1
If dgvServerProcesses.Rows(i).Cells(2).Value = "True" Then
dgvServerProcesses.Rows(i).Cells(2).Style.BackColor = Color.Black
End If
Next
'lege row die normaal wordt toegevoegd verwijderen
dgvServerProcesses.AllowUserToAddRows = False
End Sub
我只是试图将两件事放在不同的潜艇中。因此,填充网格并标记活动网格现在是分开的。两个潜艇都由load
潜水艇调用。但颜色仍然不起作用。但如果我用一个按钮调用checkprocess
它确实有用。但也很奇怪的是,columncount是不同的。如果我用一个按钮调用它,他会在0的另一个案例中开始指望1。有人可以向我解释一下吗?我在这里显示了检查活动布尔值的新代码
Public Sub CheckProcessActive()
For i As Integer = 0 To dgvServerProcesses.Rows.Count - 1
If dgvServerProcesses.Rows(i).Cells(2).Value = "True" Then
dgvServerProcesses.Rows(i).Cells("ACTIVE").Style.BackColor = Color.Green
Else
dgvServerProcesses.Rows(i).Cells("ACTIVE").Style.BackColor = Color.Red
End If
Next
End Sub
答案 0 :(得分:0)
您注意到的行为是正常。即使您设置DataSource
属性,DatagridView
也不会创建列并在显示网格之前填充,但在设置此属性后不会立即填充。
您可以使用DataGridView.DataBindingComplete事件确保在更改样式时填充网格,并在此处调用CheckProcessActive()
。