Datagridview绑定datatable设置列宽,固定指定列的列宽,vb.net、c#源码

  • A+
所属分类:vb.net

上次做个小工具都是直接写死,在Datagridview上直接先添加好需要的列,这样是好设值指定的列的宽度,也可以自由随窗口自动填充列宽大小。但是这个做法,行数少还可以。要是读文件,或者数据库里面的东西,那直接卡飞起来,一个字,慢。。。只有绑定数据datatable个才快,10万条也就几秒钟,这个还是可以接受的把!!!但是用这个datatable后原来手动键的列就没用了,这会自己新建,但是这个列宽默认的不是很满意,比如,序列,它很宽几乎和其他一样宽,浪费空间,直接设置DataGridView1.Columns(0).Width = 70  这个,但是窗口大小改变,表里面的列也变了,那出现这种情况,肯定是想办法把他固定死。。

完整解决列宽设置,固定列宽

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

' 请手动设置 DataGridView1 的 Anchor 属性,选择上下左右自动填充

Dim dt As New DataTable()
'给datatable添加三个列
dt.Columns.Add("序号", GetType(String))
dt.Columns.Add("文件路径名称", GetType(String))
dt.Columns.Add("日期", GetType(String))

DataGridView1.RowHeadersVisible = False '隐藏第一列
DataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill '设置所有列自动填充

'创建一个表

For j = 1 To 35
Dim dr As DataRow = dt.NewRow()
dr(0) = j
dr(1) = "伙计百科aaaa-" & j
dr(2) = Format("{0:dd/MM/yy}", DateTime.Now)
dt.Rows.Add(dr)
Next

'将数据加入到datatable中
Me.DataGridView1.DataSource = dt

' 设置datatable表的样式
DataGridView1.Columns(0).Width = 70 '第1列设置列宽
DataGridView1.Columns(2).Width = 120 '第3列设置列宽

DataGridView1.Columns(0).Frozen = DataGridViewAutoSizeColumnMode.None '第一列不自动填充宽度
DataGridView1.Columns(1).AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill '第2列自动填充宽度
DataGridView1.Columns(2).AutoSizeMode = DataGridViewAutoSizeColumnMode.None '第3列不自动填充宽度

DataGridView1.Columns(0).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter '第一列设置整列文字居中
DataGridView1.ColumnHeadersDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter '所有表头文字居

End Sub

复制

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: