📄 frmgoodsinfo.vb
字号:
'为列样式对应的TextBox添加事件响应
'为DataGrid单元格支持双击双击添加事件响应
AddHandler aColumnTextColumn.TextBox.MouseDown, New MouseEventHandler(AddressOf DGDoubleClick)
AddHandler aColumnTextColumn.TextBox.DoubleClick, New EventHandler(AddressOf dgdGoodInfo_DoubleClick)
'将列样式添加到表样式中
ts.GridColumnStyles.Add(aColumnTextColumn)
Next
'设置DataGrid中奇数行的背景色
ts.AlternatingBackColor = Color.LightGray
ts.AllowSorting = False
'将表样式ts添加到DataGrid中
dgdGoodInfo.TableStyles.Add(ts)
'为MyCombo添加TextChanged事件响应
AddHandler MyCombo.TextChanged, AddressOf Ctrls_TextChanged
'设置MyCombo的Name以及Visible属性
MyCombo.Name = "MyCombo"
MyCombo.Visible = False
MyCombo.DropDownStyle = ComboBoxStyle.DropDown
'清空MyCombo
MyCombo.Items.Clear()
'给MyCombo添加项
MyCombo.Items.Add("包")
MyCombo.Items.Add("瓶")
MyCombo.Items.Add("盒")
MyCombo.Items.Add("袋")
MyCombo.Items.Add("箱")
'把MyCombo加入到dgdGoodInfo的Controls集合中
dgdGoodInfo.Controls.Add(MyCombo)
SqlConnection1.ConnectionString = DataBase.sConn
'用SqlDataAdapter1填充DataSet11的商品清单表
SqlDataAdapter1.Fill(DataSet11, "商品清单")
'设置dgdGoodInfo的数据源
ts.MappingName = DataSet11.Tables("商品清单").TableName
dgdGoodInfo.DataSource = _
DataSet11.Tables("商品清单").DefaultView
End Sub
Private Sub dgdGoodInfo_DoubleClick(ByVal sender As Object, _
ByVal e As System.EventArgs) Handles dgdGoodInfo.DoubleClick
If bClose Then
Close()
End If
End Sub
Public Function SetInfo() As String
Dim sReturn As String
Dim iRow As Integer = dgdGoodInfo.CurrentRowIndex
Dim sId, sName, sUnit As String
sId = DataSet11.Tables("商品清单").Rows(iRow)("货号")
sName = DataSet11.Tables("商品清单").Rows(iRow)("品名")
sUnit = DataSet11.Tables("商品清单").Rows(iRow)("单位")
sReturn = sId.Trim + "|" + sName.Trim + "|" + sUnit.Trim
Return sReturn
End Function
Private Sub ToolBar1_ButtonClick(ByVal sender As Object, _
ByVal e As ToolBarButtonClickEventArgs) _
Handles ToolBar1.ButtonClick
If e.Button Is tbbSave Then
Dim row As Integer
row = dgdGoodInfo.CurrentCell.RowNumber
dgdGoodInfo.CurrentCell = New DataGridCell(row + 1, 0)
Try
'判断DataSet11的数据是否有变化
'即DataGrid控件上是否有数据更改或新增数据
If DataSet11.HasChanges Then
'通过SqlDataAdapter1更新数据库数据
SqlDataAdapter1.Update(DataSet11)
DataSet11.Tables("商品清单"). _
DefaultView.RowFilter = ""
MessageBox.Show("数据修改成功!")
Else
MessageBox.Show("无修改的数据!")
End If
Catch ex As Exception
MessageBox.Show("修改的数据出错")
End Try
ElseIf e.Button Is tbbDel Then
Try
'获得DataGrid当前被选中的行号
Dim iRow = dgdGoodInfo.CurrentRowIndex
'弹出对话框让用户确认要删除记录
'如果用户确认要删除记录
If MessageBox.Show("你确认要删除此条记录吗?", "Confirm", MessageBoxButtons.YesNo) = DialogResult.Yes Then
'从商品清单表删除当前被选中记录()
DataSet11.Tables("商品清单").Rows(iRow).Delete()
Else
Exit Sub
End If
Try
If DataSet11.HasChanges Then
'用SqlDataAdapter1更新数据库
SqlDataAdapter1.Update(DataSet11)
DataSet11.Tables("商品清单").DefaultView.RowFilter = ""
MessageBox.Show("数据修改成功!")
Else
MessageBox.Show("无修改的数据!")
End If
Catch ex As Exception
MessageBox.Show("删除数据出错")
End Try
Catch ex As Exception
MessageBox.Show("删除数据出错")
End Try
End If
End Sub
Private Sub Ctrls_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs)
'判断DataGrid的当前单元格是否属于第四列
'DataGrid的列是从0开始
If dgdGoodInfo.CurrentCell.ColumnNumber = 4 Then
If dgdGoodInfo.Item(dgdGoodInfo.CurrentCell) & "" = "" Then
SendKeys.Send(" ")
End If
'设置当前单元格的值为MyCombo选中的项的Text
dgdGoodInfo.Item(dgdGoodInfo.CurrentCell) = MyCombo.Text
End If
End Sub
Private Sub dgdGoodInfo_Click(ByVal sender As Object, _
ByVal e As System.EventArgs) Handles dgdGoodInfo.Click
'设置MyCombo的Visible,Width属性
MyCombo.Visible = False
MyCombo.Width = 0
End Sub
Private Sub dgdGoodInfo_CurrentCellChanged(ByVal sender _
As Object, ByVal e As System.EventArgs) Handles _
dgdGoodInfo.CurrentCellChanged
If dgdGoodInfo.CurrentCell.ColumnNumber = 4 Then
MyCombo.Visible = False
MyCombo.Width = 0
MyCombo.Left = dgdGoodInfo.GetCurrentCellBounds.Left
MyCombo.Top = dgdGoodInfo.GetCurrentCellBounds.Top
MyCombo.Text = dgdGoodInfo.Item(dgdGoodInfo.CurrentCell) & ""
MyCombo.Visible = True
Else
MyCombo.Visible = False
MyCombo.Width = 0
End If
End Sub
Private Sub dgdGoodInfo_Paint(ByVal sender As Object, _
ByVal e As PaintEventArgs) Handles dgdGoodInfo.Paint
If dgdGoodInfo.CurrentCell.ColumnNumber = 4 Then
MyCombo.Width = dgdGoodInfo.GetCurrentCellBounds.Width
End If
End Sub
Private Sub dgdGoodInfo_Scroll(ByVal sender As Object, _
ByVal e As System.EventArgs) Handles dgdGoodInfo.Scroll
MyCombo.Visible = False
MyCombo.Width = 0
End Sub
Private Sub dgdGoodInfo_MouseDown(ByVal sender As Object, _
ByVal e As MouseEventArgs) Handles dgdGoodInfo.MouseDown
'记住在dgdGoodInfo点下鼠标的时间
gridMouseDownTime = DateTime.Now
End Sub
Private Sub DGDoubleClick(ByVal sender As Object, ByVal e As MouseEventArgs)
'判断两次单击时间是否小于双击的时间间隔
If (DateTime.Now < gridMouseDownTime.AddMilliseconds(SystemInformation.DoubleClickTime)) Then
'两次单击时间小于双击的时间间隔则调用dgdGoodInfo双击处理函数
dgdGoodInfo_DoubleClick(Nothing, Nothing)
End If
End Sub
End Class
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -