借助ComboBox实现DataGridView列下拉选择效果
来源:互联网 发布:unity3d动画教程 编辑:程序博客网 时间:2024/06/05 21:50
情况二、DataGridView的数据来源于DataTable:Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
With DataGridView1
'只读,不允许修改单元格内容
.ReadOnly = True
'禁止多选单元格
.MultiSelect = False
'设定行数与列数
.RowCount = 10
.ColumnCount = 4
'添加DataGridView标题
For i As Integer = 0 To .ColumnCount - 1
.Columns(i).HeaderText = "第" & i + 1 & "列"
Next
'设置ComboBox样式
ComboBox1.DropDownStyle = ComboBoxStyle.DropDownList
'为ComboBox添加项(用数组)
ComboBox1.Items.AddRange({"A", "B", "C"})
'设置ComboBox的父容器为DataGridView,这样ComboBox的坐标就是相对DataGridView,而不是Form
ComboBox1.Parent = DataGridView1
'先不显示ComboBox
ComboBox1.Visible = False
End With
End Sub
Private Sub DataGridView1_SelectionChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles DataGridView1.SelectionChanged
With DataGridView1
'获取选定单元格的坐标:X、Y
If .SelectedCells.Count <> 0 Then
Dim cellX As Integer = .GetCellDisplayRectangle(.SelectedCells(0).ColumnIndex, .SelectedCells(0).RowIndex, False).X
Dim cellY As Integer = .GetCellDisplayRectangle(.SelectedCells(0).ColumnIndex, .SelectedCells(0).RowIndex, False).Y
'设置ComboBox的Size为选定单元格的Size
ComboBox1.Size = .SelectedCells(0).Size
'设置ComboBox的坐标,以便覆盖选定的单元格,达到单元格下拉效果
ComboBox1.Left = cellX
ComboBox1.Top = cellY
If DataGridView1.SelectedCells(0).Value <> vbNullString Then
ComboBox1.Text = DataGridView1.SelectedCells(0).Value
End If
End If
End With
End Sub
Private Sub ComboBox1_LocationChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles ComboBox1.LocationChanged
'选定单元格开始触发
If DataGridView1.SelectedCells.Count <> 0 Then
'判断哪一列显示ComboBox下拉
If DataGridView1.SelectedCells(0).ColumnIndex = 1 Then
ComboBox1.Visible = True
'如果DataGridView单元格已经有数据,则让Combo的值自动显示其数据值,否则就显示空
If DataGridView1.SelectedCells(0).Value <> vbNullString Then
ComboBox1.Text = DataGridView1.SelectedCells(0).Value
Else
ComboBox1.SelectedIndex = -1
End If
Else
ComboBox1.Visible = False
End If
End If
End Sub
Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged
'将Combo的内容写入DataGridview选定的单元格
DataGridView1.SelectedCells(0).Value = ComboBox1.Text
End Sub
Private Sub DataGridView1_ColumnWidthChanged(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewColumnEventArgs) Handles DataGridView1.ColumnWidthChanged
'在允许调整DataGridView列宽的情况下,DataGridView调整列宽时,让ComboBox宽度随之改变
If e.Column.Index = 1 Then '限定是哪一列调整列宽时才触发
ComboBox1.Width = e.Column.Width
End If
End Sub
End Class
Imports System.Data
Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
With DataGridView1
'只读,不允许修改单元格内容
.ReadOnly = True
'禁止多选单元格
.MultiSelect = False
'禁止删除和增加行及调整行高
.AllowUserToAddRows = False
.AllowUserToDeleteRows = False
.AllowUserToResizeRows = False
'创建DataTable()
Dim dt As DataTable = New DataTable
'为DataTable添加列
dt.Columns.Add(New DataColumn("id", System.Type.GetType("System.Int32")))
dt.Columns.Add(New DataColumn("Name", System.Type.GetType("System.String")))
dt.Columns.Add(New DataColumn("Level", System.Type.GetType("System.String")))
dt.Columns.Add(New DataColumn("Memo", System.Type.GetType("System.String")))
'为DataTable添加行
'方法一添加新行:
Dim dr As DataRow
dr = dt.NewRow
dr("id") = 1
dr("Name") = "张三"
dt.Rows.Add(dr)
dr = dt.NewRow
'方法二添加新行
dt.Rows.Add(New Object() {"2", "李四"})
dt.Rows.Add(New Object() {"3", "王五"})
'设置DataGridView数据源为DataTable
.DataSource = dt
'设置ComboBox样式
ComboBox1.DropDownStyle = ComboBoxStyle.DropDownList
'为ComboBox添加项(用数组)
ComboBox1.Items.AddRange({"A", "B", "C"})
'设置ComboBox的父容器为DataGridView,这样ComboBox的坐标就是相对DataGridView,而不是Form
ComboBox1.Parent = DataGridView1
'先不显示ComboBox
ComboBox1.Visible = False
End With
End Sub
Private Sub DataGridView1_ColumnWidthChanged(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewColumnEventArgs) Handles DataGridView1.ColumnWidthChanged
'在允许调整DataGridView列宽的情况下,DataGridView调整列宽时,让ComboBox宽度随之改变
If e.Column.Index = 2 Then '限定是哪一列调整列宽时才触发
ComboBox1.Width = e.Column.Width
End If
End Sub
Private Sub DataGridView1_SelectionChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles DataGridView1.SelectionChanged
With DataGridView1
'获取选定单元格的坐标:X、Y
If DataGridView1.SelectedCells.Count <> 0 Then
Dim cellX As Integer = .GetCellDisplayRectangle(.SelectedCells(0).ColumnIndex, .SelectedCells(0).RowIndex, False).X
Dim cellY As Integer = .GetCellDisplayRectangle(.SelectedCells(0).ColumnIndex, .SelectedCells(0).RowIndex, False).Y
'设置ComboBox的Size为选定单元格的Size
ComboBox1.Size = .SelectedCells(0).Size
'设置ComboBox的坐标,以便覆盖选定的单元格,达到单元格下拉效果
ComboBox1.Left = cellX
ComboBox1.Top = cellY
If DataGridView1.SelectedCells(0).Value.ToString <> vbNullString Then
ComboBox1.Text = DataGridView1.SelectedCells(0).Value
End If
End If
End With
End Sub
Private Sub ComboBox1_LocationChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles ComboBox1.LocationChanged
'选定单元格开始触发
If DataGridView1.SelectedCells.Count <> 0 Then
'判断哪一列显示ComboBox下拉
If DataGridView1.SelectedCells(0).ColumnIndex = 2 Then
ComboBox1.Visible = True
'如果DataGridView单元格已经有数据,则让Combo的值自动显示其数据值,否则就显示空
If DataGridView1.SelectedCells(0).Value.ToString <> vbNullString Then
ComboBox1.Text = DataGridView1.SelectedCells(0).Value
Else
ComboBox1.SelectedIndex = -1
End If
Else
ComboBox1.Visible = False
End If
End If
End Sub
Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged
'将Combo的内容写入DataGridview选定的单元格
DataGridView1.SelectedCells(0).Value = ComboBox1.Text
End Sub
End Class
- 借助ComboBox实现DataGridView列下拉选择效果
- 巧用comboBox实现datagridview中DataGridViewComboBoxColumn列
- datagridview定制ComboBox列
- c#datagridview加入combobox下拉框的实现
- Combobox弹出下拉的dataGridView
- iOS 下拉选择 comboBox
- 使用EXT实现ComboBox多列下拉列表
- 在ExtJS的ComboBox组件中实现下拉树效果
- 在ExtJS的ComboBox组件中实现下拉树效果
- 在ExtJS的ComboBox组件中实现下拉树效果
- winform datagridview combobox 下拉框 事件
- C# DataGridView中ComboBox下拉更改事件
- Android实现下拉导航选择菜单效果
- Android实现下拉导航选择菜单效果
- Android实现下拉导航选择菜单效果
- Android实现下拉导航选择菜单效果
- Android实现下拉导航选择菜单效果
- Android实现下拉导航选择菜单效果
- iOS8区域定位CLVisit的了解
- T3单据记账失败
- VSFlex8n.ocx控件过期
- T1商品无法增加下级分类
- 将DataTable中执行Select(\"条件\")后的结果显示在DataGridView
- 借助ComboBox实现DataGridView列下拉选择效果
- CodeForces 687C The Values You Can Make
- U8存货核算常用存储过程
- Vi详细用法
- T3提示登陆失败
- Cadence基础知识8(3W原则的实质以及20H原则最强整理)
- SQL 2008 更改表结构后提示启用了\"阻止保存要求重新创建表的更改\"选项
- win7/8/8.1/2008等系统打开Chm文件补丁
- springmvc sends and receives data by ajax request using json format