Winforms DataGridView では、どうすればよいですか:
- 行ヘッダーの矢印を削除しますか? 行ヘッダーのテキストを表示する必要があるため、単純に設定することはできません
RowHeadersVisible = false
。 - 行ヘッダーの幅をプログラムで調整しますか? コードで行ヘッダーを設定しているので、変更時に行ヘッダーのテキストを表示するために幅を調整する必要があります。
Winforms DataGridView では、どうすればよいですか:
RowHeadersVisible = false
。まず、DataGridView として知られている関数をオーバーライドします。
private void dataGridView1_RowPostPaint(object sender, DataGridViewRowPostPaintEventArgs e)
{
e.PaintHeader(DataGridViewPaintParts.All & ~DataGridViewPaintParts.ContentBackground);
}
ボタンをクリックすると、行ヘッダーに値が追加されます
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();
}
並べ替えを許可する必要がありますが、矢印は表示しませんか? そうでない場合は、各列SortMode
を に設定してNotSortable
ください。並べ替える必要があるが矢印を表示しない場合は、列SortMode
をに設定し、列またはイベントProgrammatic
のデータ ソースを手動で並べ替えます。Click
MouseDown
列ヘッダーを必要なテキストに設定したら、フォームGraphics
クラスを使用してテキストの幅を取得し、それに応じて列幅を設定します。
Graphics g = this.CreateGraphics();
int w = (int)g.MeasureString(dataGridView1.Columns[0].HeaderText, dataGridView1.Font).Width;
this.dataGridView1.Columns[0].Width = w;
まず、C# .Net 2.0 以降で数直線 RowHeadersWidth を DataGridView に追加する方法:
// 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 Excel と同様に、行ヘッダーのサイズに応じて動的にサイズを変更できます。
// 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;
}
このソリューションは、CF ではなく、.Net Framework 2.0 以降専用です。