首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Datagridview上调整Rowheader属性

在Datagridview上调整Rowheader属性
EN

Stack Overflow用户
提问于 2012-08-30 01:37:57
回答 3查看 21.2K关注 0票数 2

在Winforms DataGridView中,我如何:

  1. 删除行标题上的箭头?我需要显示行标题文本,所以我不能简单地设置RowHeadersVisible = false
  2. 以编程方式调整行标题的宽度?我正在按代码设置行标题,因此需要调整宽度以在更改时显示行标题文本。
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-08-31 12:08:43

首先,重写称为DataGridView的函数

代码语言:javascript
复制
private void dataGridView1_RowPostPaint(object sender, DataGridViewRowPostPaintEventArgs e)
{
    e.PaintHeader(DataGridViewPaintParts.All & ~DataGridViewPaintParts.ContentBackground);
}

在按钮上单击“向行标题添加值”。

代码语言:javascript
复制
private void button1_Click(object sender, EventArgs e)
{
    string a = "khan yousafzai";
    dataGridView1.RowHeadersWidth = dataGridView1.RowHeadersWidth +(7* a.Length);
    dataGridView1.Rows[0].HeaderCell.Value = a;
    dataGridView2.Rows.Add();
}
票数 5
EN

Stack Overflow用户

发布于 2012-08-30 02:53:05

  1. 是否仍然需要允许排序,但不显示箭头?如果没有,只需将每个列SortMode设置为NotSortable。如果需要排序,但不显示箭头,请将列SortMode设置为Programmatic,并手动对列ClickMouseDown事件中的数据源进行排序。
  2. 将列标题设置为所需的任何文本后,使用form Graphics类获取文本的宽度,然后相应地设置列宽: 图形g= this.CreateGraphics();int w=this.CreateGraphics dataGridView1.Font).Width;
票数 1
EN

Stack Overflow用户

发布于 2013-01-17 12:33:59

首先,如何将数字行RowHeadersWidth添加到C# .Net 2.0及更高版本的DataGridView中:

代码语言:javascript
复制
// On Form_Load add the numeration to DataGridView Row Header
for (int i = 0; i < dataGridView1.Rows.Count; i++)
{
    dataGridView1.Rows[i].HeaderCell.Value = (i + 1).ToString();
}

现在,您可以根据行头的大小动态调整其大小,就像在Microsoft中一样。

代码语言:javascript
复制
// Dinamically adjust row header size to max current width available (like Microsoft Excel does)
private void dataGridView1_RowPrePaint(object sender, DataGridViewRowPrePaintEventArgs e)
{
    int firstDisplayedCellIndex = dataGridView1.FirstDisplayedCell.RowIndex;
    int lastDisplayedCellIndex = firstDisplayedCellIndex + dataGridView1.DisplayedRowCount(true);
    
    Graphics Graphics = dataGridView1.CreateGraphics();
    int measureFirstDisplayed = (int)(Graphics.MeasureString(firstDisplayedCellIndex.ToString(), dataGridView1.Font).Width);
    int measureLastDisplayed = (int)(Graphics.MeasureString(lastDisplayedCellIndex.ToString(), dataGridView1.Font).Width);
                
    int rowHeaderWitdh = System.Math.Max(measureFirstDisplayed, measureLastDisplayed);
    dataGridView1.RowHeadersWidth = rowHeaderWitdh + 35;
}

此解决方案仅适用于.Net Framework2.0及以上版本,而不适用于CF。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12188788

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档