重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

C# Datagridview で
行ヘッダーの幅をぎりぎりまで(20pix)小さくして
行番号(3行までなので1ケタだけ)を表示させたいのですが
隠れてしまって40pixぐらいまで広げないと
見えません
幅を狭くしたまま、左寄せで1ケタの行番号を表示させる方法を
おしえてください
お願いします

A 回答 (2件)

#1 です。


行ヘッダーに表示させている行番号をどのように指定しているのかわからないのですが、その数値を 10 で割った余りの値を指定すれば良いかと。
ex.) 123 → 3

ここを参考にししているのなら
http://dobon.net/vb/dotnet/datagridview/drawrown …
(e.RowIndex + 1).ToString() を ((e.RowIndex % 10) +1).ToString() に変更

private void dataGridView1_CellPainting(object sender, DataGridViewCellPaintingEventArgs e)
{
  if(e.ColumnIndex < 0 && e.RowIndex >= 0)
  {
    e.Paint(e.ClipBounds, DataGridViewPaintParts.All);
    Rectangle indexRect = e.CellBounds;
    indexRect.Inflate(-2, -2);
    TextRenderer.DrawText(e.Graphics,
      ((e.RowIndex % 10) + 1).ToString(),
      e.CellStyle.Font,
      indexRect,
      e.CellStyle.ForeColor,
      TextFormatFlags.Right | TextFormatFlags.VerticalCenter);
    e.Handled = true;
  }
}

ここを参考にしているのなら
http://dobon.net/vb/dotnet/datagridview/headerte …
こんな感じ
for (int i = 0; i < dataGridView1.Rows.Count; i++)
{
  dataGridView1.Rows[i].HeaderCell.Value = ((i + 1) % 10).ToString();
}

とか
    • good
    • 0
この回答へのお礼

ご教示ありがとうございます
返信遅くなりすみません

行番号は出るのですが、
3行しかない小さな表なので
ヘッダーの表示幅を
デフォルトよりずっと小さくしたいんです
幅を強制的に小さくすると
表示した番号が中にかくれて
ヘッダーを広げないとみえないんです
左寄せの指定をしてもだめでした

お礼日時:2015/12/11 12:46

手元の PC に開発ツールがインストールされていないので自分で確認できないのですが、本当の意味の行番号の列とは別に、表示用に値を 1ケタに絞った列を作り、本当の行番号の列を非表示にすればよいのではないでしょうかね。


データセットに取り込む段階で 1ケタの表示用行番号の列を含めてしまうとか。
    • good
    • 0
この回答へのお礼

回答ありがとうございます!
実は、私もこのようなことも考えたんですが、
1行選択させたいので
どうしても、『行ヘッダー』が必要
と思いました
何かいい方法はないでしょうか?

お礼日時:2015/12/07 20:10

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!