关于DataGridView控件的标题列显示序号方法问题,及不显示标题列方法

如果想让DataGridView不显示标题列,只需要设置

RowHeadersVisible属性为false即可。

这样可以自己定义第一列 为序号列。

如果想在标题列显示序号,方法如下:

 

列标题头设置如下:

 dataGridView1.TopLeftHeaderCell.Value = "编号";

  private void dataGridView1_RowPostPaint(object sender, DataGridViewRowPostPaintEventArgs e)
        {
            Rectangle rectangle = new Rectangle(e.RowBounds.Location.X,
                e.RowBounds.Location.Y,
                dataGridView1.RowHeadersWidth - 4,
                e.RowBounds.Height);

            TextRenderer.DrawText(e.Graphics, (e.RowIndex + 1).ToString(), 
                dataGridView1.RowHeadersDefaultCellStyle.Font,
                rectangle,
                dataGridView1.RowHeadersDefaultCellStyle.ForeColor, 
                TextFormatFlags.VerticalCenter | TextFormatFlags.Right);
        }

或者Datagridview的RowStateChanged事件,只需在该事件处理程序中加上一行代码即可为Datagridview显示行号了,代码如下:
e.Row.HeaderCell.Value = (e.Row.Index + 1).ToString();

还有一些其他方法。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您可以使用DataGridView控件的ColumnHeaderMouseClick事件来实现拖拽一进行排序,标题不动的效果。具体实现步骤如下: 1. 设置DataGridView控件的AllowUserToOrderColumns属性为True,允许用户拖拽。 2. 在ColumnHeaderMouseClick事件中,判断用户是否点击了标题。如果是,则将SortMode属性设置为Programmatic,禁止用户通过单击标题进行排序。 3. 在ColumnHeaderMouseClick事件中,判断用户是否拖拽。如果是,则获取当前的索引和鼠标拖拽的位置,然后使用DoDragDrop方法进行拖拽操作。 4. 在DragEnter事件中,判断拖拽的数据是否是的索引,如果是,则将Effect属性设置为Move,表示可以移动。 5. 在DragDrop事件中,获取拖拽的索引和目标索引,然后交换两的位置即可。 下面是示例代码: ``` Private Sub DataGridView1_ColumnHeaderMouseClick(sender As Object, e As DataGridViewCellMouseEventArgs) Handles DataGridView1.ColumnHeaderMouseClick ' 判断是否点击了标题 If e.Button = MouseButtons.Left AndAlso e.RowIndex = -1 Then ' 禁止用户通过单击标题进行排序 DataGridView1.Columns(e.ColumnIndex).SortMode = DataGridViewColumnSortMode.Programmatic End If End Sub Private Sub DataGridView1_ColumnHeaderMouseDoubleClick(sender As Object, e As DataGridViewCellMouseEventArgs) Handles DataGridView1.ColumnHeaderMouseDoubleClick ' 恢复排序功能 DataGridView1.Columns(e.ColumnIndex).SortMode = DataGridViewColumnSortMode.Automatic End Sub Private Sub DataGridView1_ColumnHeaderMouseMove(sender As Object, e As DataGridViewCellMouseEventArgs) Handles DataGridView1.ColumnHeaderMouseMove ' 判断是否拖拽 If e.Button = MouseButtons.Left AndAlso e.RowIndex = -1 Then ' 开始拖拽操作 Dim data As New DataObject(DataFormats.Text, e.ColumnIndex.ToString()) DataGridView1.DoDragDrop(data, DragDropEffects.Move) End If End Sub Private Sub DataGridView1_DragEnter(sender As Object, e As DragEventArgs) Handles DataGridView1.DragEnter ' 判断拖拽的数据是否是的索引 If e.Data.GetDataPresent(DataFormats.Text) AndAlso Integer.TryParse(e.Data.GetData(DataFormats.Text).ToString(), Nothing) Then ' 可以移动 e.Effect = DragDropEffects.Move End If End Sub Private Sub DataGridView1_DragDrop(sender As Object, e As DragEventArgs) Handles DataGridView1.DragDrop ' 获取拖拽的索引和目标索引 Dim sourceIndex As Integer = Integer.Parse(e.Data.GetData(DataFormats.Text).ToString()) Dim targetIndex As Integer = DataGridView1.Columns.GetColumnIndexAtX(e.X) ' 交换两的位置 If sourceIndex <> targetIndex Then Dim sourceColumn As DataGridViewColumn = DataGridView1.Columns(sourceIndex) DataGridView1.Columns.RemoveAt(sourceIndex) DataGridView1.Columns.Insert(targetIndex, sourceColumn) End If End Sub ``` 注意:以上代码仅实现了拖拽一进行排序,标题不动的功能。如果您需要实现更复杂的排序功能,可以参考DataGridView控件的Sort方法

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值