如何改变DataGridView指定单元格的ColumnType属性

qiuzhilv008 2013-07-03 01:24:18
DGV编辑Column属性的窗口Edit Column中有ColumnType这一项,这项默认值是DataGridViewTextBoxColumn。
在生成的DGV中如何改变某一个单元格的这个属性?代码怎么写,点了半天也没点出这个属性来。
例如想改变第一行第二列的这个属性
Me.DataGridView1.Rows(0).Cells(1).后面该怎么写,或者是用其他方法改变
...全文
1702 21 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
XIHONGSHI238 2014-11-14
  • 打赏
  • 举报
回复
我也试了上述代码,在当前单元格的组合框中选择数据挺方便的,但是遗留了一个问题: 焦点移出这个单元格后,那个单元格依然显示组合框的下拉按钮。哪位大侠能给完善一下吗?
qiuzhilv008 2013-07-10
  • 打赏
  • 举报
回复
引用 18 楼 u010924806 的回复:
[quote=引用 16 楼 qiuzhilv008 的回复:] 再顶下,还有知道怎么回事的吗
Public Class Form1
    '窗体上只需要拉出一个DataGridView,一个Button,其它什么也不用做
    '你选中哪个单元格,就可将该单元格设置为ComboBoxCell类型
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        DataGridView1.ColumnCount = 6
        DataGridView1.Rows.Add(10)
        For i As Integer = 0 To 10
            For j As Integer = 0 To 5
                DataGridView1.Rows(i).Cells(j).Value = CInt(Rnd() * 1000)
            Next
        Next
    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        If DataGridView1.CurrentCell.GetType.ToString = "System.Windows.Forms.DataGridViewComboBoxCell" Then
            Exit Sub
        End If
        Dim Cell As New DataGridViewComboBoxCell
        Dim a As Integer = DataGridView1.CurrentCell.RowIndex, b As Integer = DataGridView1.CurrentCell.ColumnIndex
        For i As Integer = 0 To 5
            Cell.Items.Add(DataGridView1.Rows(a).Cells(i).Value.ToString)
        Next
        DataGridView1.Rows(a).Cells(b) = Cell
    End Sub

End Class
[/quote] 试了下确实好用,之前不管用的问题还没看怎么回事。多谢大家
vicanary 2013-07-09
  • 打赏
  • 举报
回复
在cellclick事件中,弹出cell.value.tostring,看下什么情况
men52676521 2013-07-09
  • 打赏
  • 举报
回复
再重新选择别的类型的啊
不说也罢 2013-07-09
  • 打赏
  • 举报
回复
引用 16 楼 qiuzhilv008 的回复:
再顶下,还有知道怎么回事的吗
Public Class Form1
    '窗体上只需要拉出一个DataGridView,一个Button,其它什么也不用做
    '你选中哪个单元格,就可将该单元格设置为ComboBoxCell类型
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        DataGridView1.ColumnCount = 6
        DataGridView1.Rows.Add(10)
        For i As Integer = 0 To 10
            For j As Integer = 0 To 5
                DataGridView1.Rows(i).Cells(j).Value = CInt(Rnd() * 1000)
            Next
        Next
    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        If DataGridView1.CurrentCell.GetType.ToString = "System.Windows.Forms.DataGridViewComboBoxCell" Then
            Exit Sub
        End If
        Dim Cell As New DataGridViewComboBoxCell
        Dim a As Integer = DataGridView1.CurrentCell.RowIndex, b As Integer = DataGridView1.CurrentCell.ColumnIndex
        For i As Integer = 0 To 5
            Cell.Items.Add(DataGridView1.Rows(a).Cells(i).Value.ToString)
        Next
        DataGridView1.Rows(a).Cells(b) = Cell
    End Sub

End Class
qiuzhilv008 2013-07-08
  • 打赏
  • 举报
回复
再顶下,还有知道怎么回事的吗
qiuzhilv008 2013-07-05
  • 打赏
  • 举报
回复
引用 14 楼 whitewolf123 的回复:
表示不能理解,没有遇到这样的
还是很感谢细致的回复,辛苦了
vicanary 2013-07-05
  • 打赏
  • 举报
回复
表示不能理解,没有遇到这样的
vicanary 2013-07-04
  • 打赏
  • 举报
回复
简单来说,就是先定义一个DataGridView的单元格属性的控件:


给它赋值后,直接将这个控件赋值给dataGridView的一个单元格
vicanary 2013-07-04
  • 打赏
  • 举报
回复
这是我以前给单独一个单元格加载combbox的代码,我一会给你写个button的

 '申请一个DataGridViewComboBoxCell
                        Dim l_dtgCell As New DataGridViewComboBoxCell
                        l_dtgCell.DisplayStyle = DataGridViewComboBoxDisplayStyle.ComboBox

                        Dim loc_dr_mulOBJ As OleDb.OleDbDataReader = comm.ExecuteReader
                        '为DataGridViewComboBoxCell加载元素
                        While loc_dr_mulOBJ.Read
                            l_dtgCell.Items.Add(loc_dr_mulOBJ("cMATERIEL_SPEC"))
                        End While
                        DgvObjScan.Rows(int_currentRow).Cells(4) = l_dtgCell
                        '如果开始有值,则在加载完Cbx后将该单元格设置为str_orgNote
                        If str_orgNote <> "" Then
                            DgvObjScan.Rows(int_currentRow).Cells(4).Value = str_orgNote
                        End If
vicanary 2013-07-04
  • 打赏
  • 举报
回复
=我,我写个代码
qiuzhilv008 2013-07-04
  • 打赏
  • 举报
回复
引用 3 楼 ntmdbya 的回复:
这个得重新定义列 Dim Column1 As New System.Windows.Forms.DataGridViewTextBoxColumn Column1.HeaderText = "新列" DataGridView1.Columns.Insert(1, Column1)
想要的是把现有DGV的指定某行某列这个单元格改变其属性,比如原来设的是TEXTBOXCOLUMN,现在改成LINKCOLUMN。 不是加一个新列
ntmdbya 2013-07-04
  • 打赏
  • 举报
回复
这个得重新定义列 Dim Column1 As New System.Windows.Forms.DataGridViewTextBoxColumn Column1.HeaderText = "新列" DataGridView1.Columns.Insert(1, Column1)
qiuzhilv008 2013-07-04
  • 打赏
  • 举报
回复
追加了一列,追加的列是显示出来了。可设的两行都没显示出来
我用的是VS2012是否有什么不同

Dim addCol As New DataGridViewTextBoxColumn
addCol.Name = "test"
Me.DataGridView1.Columns.Insert(2, addCol)
Dim cell1 As New DataGridViewLinkCell
cell1.Value = "LINK"
Me.DataGridView1.Rows(0).Cells(2) = cell1
Dim cell2 As New DataGridViewCheckBoxCell
cell2.Value = True
Me.DataGridView1.Rows(1).Cells(2) = cell2

ntmdbya 2013-07-04
  • 打赏
  • 举报
回复
引用 8 楼 qiuzhilv008 的回复:
DGV是普通的,想把第二行第二列的单元格设成有LINK的,参照您的代码写了下面两句 Dim cell As New DataGridViewLinkCell Me.DataGridView1.Rows(1).Cells(1) = cell 显示出来还是原来模样。还需要设置哪里?
写在数据绑定之后 Dim cell As New DataGridViewLinkCell cell.Value = "a12" DataGridView1.Rows(0).Cells(0) = cell Dim cell2 As New DataGridViewButtonCell cell2.Value = "bbb" DataGridView1.Rows(1).Cells(0) = cell2 Dim cell3 As New DataGridViewCheckBoxCell cell3.Value = True DataGridView1.Rows(2).Cells(0) = cell3 Dim cell4 As New DataGridViewImageCell cell4.Value = My.Resources.excel DataGridView1.Rows(3).Cells(0) = cell4
ntmdbya 2013-07-04
  • 打赏
  • 举报
回复



开始时候看错要求了。是不是这个效果啊
vicanary 2013-07-04
  • 打赏
  • 举报
回复
引用 8 楼 qiuzhilv008 的回复:
DGV是普通的,想把第二行第二列的单元格设成有LINK的,参照您的代码写了下面两句 Dim cell As New DataGridViewLinkCell Me.DataGridView1.Rows(1).Cells(1) = cell 显示出来还是原来模样。还需要设置哪里?
将cell赋值后再传给Me.DataGridView1.Rows(1).Cells(1),最好设置一个按钮来触发单步看看
vicanary 2013-07-04
  • 打赏
  • 举报
回复
引用 7 楼 whitewolf123 的回复:
简单来说,就是先定义一个DataGridView的单元格属性的控件: 给它赋值后,直接将这个控件赋值给dataGridView的一个单元格
将cell赋值后再传给Me.DataGridView1.Rows(1).Cells(1),最好设置一个按钮来触发单步看看
qiuzhilv008 2013-07-04
  • 打赏
  • 举报
回复
DGV是普通的,想把第二行第二列的单元格设成有LINK的,参照您的代码写了下面两句 Dim cell As New DataGridViewLinkCell Me.DataGridView1.Rows(1).Cells(1) = cell 显示出来还是原来模样。还需要设置哪里?
qiuzhilv008 2013-07-03
  • 打赏
  • 举报
回复
引用 1 楼 bdmh 的回复:
删除,从新创建一个
代码该怎么写啊大侠,不会删除再创建
加载更多回复(1)

16,722

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧