"Cushion" 列的宽度 header?
"Cushion" width on a column header?
我有一个小循环函数,可以根据列文本的宽度调整列的大小 Header:
var columns = VView.gridViewCblID.Columns;
foreach (DataGridViewColumn clm in columns)
{
VView.lblDummy.Text = clm.HeaderText;
if (clm.Width > VView.lblDummy.Width && clm.Width <= 100)
{
clm.Width = VView.lblDummy.Width;
}
}
但是,由于 "cushion" 会自动应用到列 Header 文本的左侧,因此列的外观为 "bunched":
那个垫子的实际宽度是多少,所以我可以将它应用到方法中?即
clm.Width = VView.lblDummy.Width + (cushion *2);
可以使用 AutoSizeColumnsMode
为您完成这项工作,然后将调整大小模式设置回手动。例如
DataGridView dgv = new DataGridView() { Dock = DockStyle.Fill };
dgv.Columns.Add("Cable Number", "Cable Number");
dgv.Columns.Add("Type", "Type");
dgv.Columns.Add("Length", "Length");
dgv.Columns["Type"].AutoSizeMode = DataGridViewAutoSizeColumnMode.ColumnHeader;
Form f = new Form();
f.Controls.Add(dgv);
dgv.HandleCreated += delegate {
dgv.BeginInvoke((Action) delegate {
var c = dgv.Columns["Type"];
int w = c.Width;
c.Width = w; // set current width, otherwise DGV reverts to previous 100 width
c.AutoSizeMode = DataGridViewAutoSizeColumnMode.None;
});
};
我有一个小循环函数,可以根据列文本的宽度调整列的大小 Header:
var columns = VView.gridViewCblID.Columns;
foreach (DataGridViewColumn clm in columns)
{
VView.lblDummy.Text = clm.HeaderText;
if (clm.Width > VView.lblDummy.Width && clm.Width <= 100)
{
clm.Width = VView.lblDummy.Width;
}
}
但是,由于 "cushion" 会自动应用到列 Header 文本的左侧,因此列的外观为 "bunched":
那个垫子的实际宽度是多少,所以我可以将它应用到方法中?即
clm.Width = VView.lblDummy.Width + (cushion *2);
可以使用 AutoSizeColumnsMode
为您完成这项工作,然后将调整大小模式设置回手动。例如
DataGridView dgv = new DataGridView() { Dock = DockStyle.Fill };
dgv.Columns.Add("Cable Number", "Cable Number");
dgv.Columns.Add("Type", "Type");
dgv.Columns.Add("Length", "Length");
dgv.Columns["Type"].AutoSizeMode = DataGridViewAutoSizeColumnMode.ColumnHeader;
Form f = new Form();
f.Controls.Add(dgv);
dgv.HandleCreated += delegate {
dgv.BeginInvoke((Action) delegate {
var c = dgv.Columns["Type"];
int w = c.Width;
c.Width = w; // set current width, otherwise DGV reverts to previous 100 width
c.AutoSizeMode = DataGridViewAutoSizeColumnMode.None;
});
};