我有一个DataGridView
,我有一个编辑Button
与每一行关联。datagridview cellcontentclick事件没有时间完成
在CellContentClick
事件我动态删除,并在我的TableLayoutPanel
这种动态的删除和控制的建立创造textbox
和Label
控制数量服用一段时间也闪烁(当然那不是一个大issuse)。
但问题是如果有人持续点击各行的编辑buttons
一段时间后整个TableLayoutPanel
是一个完整的混乱。
根据我的情况发生这种情况我的CellContentClick
事件没有完成时间,并且在事件完成之前点击其他行的编辑button
。 而我无法处理这种情况
处理程序代码是在这里:
Private Sub gdXMLDOc1_CellContentClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles gdXMLDOc1.CellContentClick
Try
If lockThis = False Then
lockThis = True
If e.ColumnIndex = 0 Then
intPreviousRowIndex = intSelectedRowIndex
intSelectedRowIndex = e.RowIndex
gdXMLDOc1.Rows(intSelectedRowIndex).DefaultCellStyle.BackColor = Color.LightSkyBlue
If intPreviousRowIndex <> -1 And intPreviousRowIndex <> intSelectedRowIndex Then
arrQuestion(intPreviousRowIndex).questionText = Replace(txtQText_New.Text, """", "\""")
arrQuestion(intPreviousRowIndex).choice = Replace(txtOpt1_New.Text, """", "\""")
For i As Integer = 0 To arrQuestion(intPreviousRowIndex).cText_eng.Length - 1
arrQuestion(intPreviousRowIndex).cText(i).line = Replace(TableLayoutPanel1.GetControlFromPosition(2, i + 3).Text, """", "\""")
Next
For i = TableLayoutPanel1.RowCount - 1 To 3 Step -1
TableLayoutPanel1.RowCount = TableLayoutPanel1.RowCount - 1
TableLayoutPanel1.Controls.Remove(TableLayoutPanel1.GetControlFromPosition(0, i))
TableLayoutPanel1.Controls.Remove(TableLayoutPanel1.GetControlFromPosition(1, i))
TableLayoutPanel1.Controls.Remove(TableLayoutPanel1.GetControlFromPosition(2, i))
Next
End If
TableLayoutPanel1.RowCount = 4
txtQText.Text = arrQuestion(intSelectedRowIndex).questionText_eng
txtOpt1.Text = arrQuestion(intSelectedRowIndex).choice_eng
txtQText_New.Text = arrQuestion(intSelectedRowIndex).questionText
txtOpt1_New.Text = arrQuestion(intSelectedRowIndex).choice
TableLayoutPanel1.RowCount = TableLayoutPanel1.RowCount - 1
Dim intRowIndex As Integer = TableLayoutPanel1.RowCount
For i As Integer = 0 To arrQuestion(intSelectedRowIndex).cText_eng.Length - 1
Dim lbl As Label = New Label()
lbl.AutoSize = True
lbl.Font = New System.Drawing.Font("Arial", 11.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
lbl.Size = New System.Drawing.Size(73, 36)
lbl.TabIndex = 5
lbl.Text = "Line" + arrQuestion(intSelectedRowIndex).cText_eng(i).lineId.ToString
Dim TxtBox1 As dynamicTextBox = New dynamicTextBox()
TxtBox1.Text = arrQuestion(intSelectedRowIndex).cText_eng(i).line
Dim TxtBox2 As TextBox = New TextBox()
TxtBox2.Font = New System.Drawing.Font("Mangal", 13.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
TxtBox2.MaxLength = 50000
TxtBox2.Size = New System.Drawing.Size(600, 37)
TxtBox2.TabIndex = 16
TxtBox2.Text = arrQuestion(intSelectedRowIndex).cText(i).line
TableLayoutPanel1.RowCount = TableLayoutPanel1.RowCount + 1
TableLayoutPanel1.Controls.Add(lbl, 0, intRowIndex)
TableLayoutPanel1.Controls.Add(TxtBox1, 1, intRowIndex)
TableLayoutPanel1.Controls.Add(TxtBox2, 2, intRowIndex)
intRowIndex = TableLayoutPanel1.RowCount
Next
End If
lockThis = False
End If
Catch ex As Exception
End Try
End Sub
嗨thanx。我已经添加了代码,你可以告诉我在哪里使用suspenlayout()和resumelayout()。 – 2012-04-13 08:28:46
您将它们包装在创建/移动/ m的代码中,并使用UI进行隐藏。所以在你单元格中点击SuspendLayout();尝试{做UI的东西}终于{ResumeLayout();} – 2012-04-13 08:37:13
sorryyy,但它也不工作:( – 2012-04-18 11:48:46