⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 frmgoodsinfo.vb

📁 VB.NET开发的进销存系统,数据库SQLSERVER
💻 VB
📖 第 1 页 / 共 3 页
字号:
            '为列样式对应的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 + -