搜索
您的当前位置:首页正文

【WinForms】DataGridView自动调整列宽度以及最后一列宽度填充

来源:二三娱乐
【WinForms】DataGridView⾃动调整列宽度以及最后⼀列宽度填充

直接上代码。

using System;

using System.Data;using System.Linq;

using System.Reflection;

using System.Windows.Forms;namespace DataGridViewTest{

public partial class Form1 : Form {

public Form1() {

InitializeComponent(); }

private void Form1_Load(object sender, EventArgs e) {

// 数据量很⼤时,开启双缓冲绘制可以明显提⾼表格绘制速度,减少拖动滚动条时卡顿

typeof(DataGridView).InvokeMember(\"DoubleBuffered\", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.SetProperty, null, dataGridView1, new object[] { true }); // 禁⽌添加⾏

dataGridView1.AllowUserToAddRows = false; // 禁⽌删除⾏

dataGridView1.AllowUserToDeleteRows = false; // 禁⽌排序列

dataGridView1.AllowUserToOrderColumns = false; // 禁⽌调整列宽

dataGridView1.AllowUserToResizeColumns = false; // 禁⽌调整⾏⾼

dataGridView1.AllowUserToResizeRows = false; // 隐藏⾏头

dataGridView1.RowHeadersVisible = false; // 整⾏选择

dataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect; // 禁⽌编辑

dataGridView1.ReadOnly = true; // ⾃动调整列宽

dataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.DisplayedCells; // 当DataSource赋值时⾃动⽣成对应的列(此属性默认为True) dataGridView1.AutoGenerateColumns = true; }

private static readonly Random _random = new Random(); private static Record MakeRecord(int index) {

return new Record {

Id = index,

InputVoltage = (float)_random.Next(490, 510) / 100, InputCurrent = (float)_random.Next(990, 1190) / 1000, OutputVoltage = (float)_random.Next(490, 510) / 100, OutputCurrent = (float)_random.Next(990, 1190) / 1000, Efficiency = (float)_random.Next(8000, 9000) / 100, Step = 1,

Time = DateTime.Now }; }

private void button1_Click(object sender, EventArgs e) {

// ⽣成50000条数据

Record[] data = Enumerable.Range(1, 50000).Select(MakeRecord).ToArray(); // 赋值数据源,根据设置,⾃动⽣成所有对应的列 dataGridView1.DataSource = data;

// 设置最后⼀列宽度填满控件

DataGridViewColumn column = dataGridView1.Columns.GetLastColumn(DataGridViewElementStates.Visible, DataGridViewElementStates.None); if (column != null) {

column.AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill; } } }

class Record {

public int Id { get; set; }

public float InputVoltage { get; set; } public float InputCurrent { get; set; } public float OutputVoltage { get; set; } public float OutputCurrent { get; set; } public float Efficiency { get; set; }

public int Step { get; set; }

public DateTime Time { get; set; } }}

因篇幅问题不能全部显示,请点此查看更多更全内容

Top