我有一个动态绑定(bind)到 datatable
的 datagridiview
。我想将标题中的一些列右对齐。
我为 cellstyle 和 headercell 的 datagridview
尝试了这个设置。对于单元格样式,它显示正确但对于标题它不是:
我使用的代码:
this.dataGridView1.Columns["Quantity"].HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleRight;
this.dataGridView1.Columns["UnitPrice"].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight;
谁能帮帮我?
最佳答案
代码有效:您在标题文本右侧看到的空间是“正常的”。
DataGridView
支持按列排序。因此,每个列标题都保留了足够的空间来显示排序字形(通常是箭头)。
如果您希望列标题中的文本完全右对齐,您需要禁用排序。将列的 SortMode
属性设置为 NotSortable。这将防止为排序字形保留空间。
实物课:
public class FrmTest : Form
{
public FrmTest()
{
InitializeComponent();
this.DataGridView1.Columns[0].HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleRight;
this.DataGridView1.Columns[0].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight;
this.DataGridView1.Columns[0].SortMode = DataGridViewColumnSortMode.NotSortable;
}
private void CheckBox1_CheckedChanged(System.Object sender, System.EventArgs e)
{
if (this.CheckBox1.Checked) {
this.DataGridView1.Columns[0].SortMode = DataGridViewColumnSortMode.Automatic;
} else {
this.DataGridView1.Columns[0].SortMode = DataGridViewColumnSortMode.NotSortable;
}
this.DataGridView1.Refresh();
}
}
1/加载表单后:
2/通过点击复选框允许排序:
3/点击列后:
关于c# - 右对齐 datagridview 中的列不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17404969/