我有一个,我有一个与每一行关联DataGridView
的编辑。Button
在CellContentClick
事件中,我正在动态删除和创建我的textbox
控件Label
的数量TableLayoutPanel
这种动态删除和创建控件需要一些时间也闪烁(这不是一个大问题)。
但问题是,如果有人在一段时间后不断地点击编辑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