DOBON.NET DOBON.NETプログラミング掲示板過去ログ

DataGridViewで逆HitTest?

  • 題名: DataGridViewで逆HitTest?
  • 著者: 初心者イービー
  • 日時: 2009/05/20 17:08:34
  • ID: 24594
  • この記事の返信元:
    • (なし)
  • この記事への返信:
  • ツリーを表示
環境/言語:[OS : Windows XP Professional / 言語 : Visual Basic .NET / .NET Framework : 3.5]
分類:[.NET]

【解決したい問題】

DataGridViewで列タイトルのマージをグラフィックの描画で
強引にしてしまおうと思っているのですが、対象のGridが
スクロール可能なため特定の列のXY座標を取得したいと思って
います。

「DataGridView 座標」などでググルとどうしてもHitTestの
解説に当たってしまうのですが、私としてはHitTestのように
座標からセルを取得するのではなくて、セル(列ヘッダー)から
座標を取得したいと思っております。

どなたかご存知の方いらっしゃいましたらご教授お願いします。
■No24594に返信(初心者イービーさんの記事)
> DataGridViewで列タイトルのマージをグラフィックの描画で
> 強引にしてしまおうと思っているのですが、
> スクロール可能なため特定の列のXY座標を取得したいと思って
> います。

列ヘッダの Y 座標は固定的なので、問題になるのは X 座標ですね。

描画先は CellPainting イベントの引数で示されますので、基本的には、
そこで渡された座標(CellBounds 等)を使っていく事になります。

隣り合うセルをマージさせる場合、複数列に跨って描画する必要があるため、
CellBounds(自セル)だけではなく、左右のセル幅も必要となりますが、これは
 DataGridView.Columns(colIndex).Width
などから算出する事ができます。
  • 題名: Re[2]: DataGridViewで逆HitTest?
  • 著者: 初心者イービー
  • 日時: 2009/05/20 17:43:44
  • ID: 24596
  • この記事の返信元:
  • この記事への返信:
    • (なし)
  • ツリーを表示
> 描画先は CellPainting イベントの引数で示されますので、基本的には、
> そこで渡された座標(CellBounds 等)を使っていく事になります。
>
> 隣り合うセルをマージさせる場合、複数列に跨って描画する必要があるため、
> CellBounds(自セル)だけではなく、左右のセル幅も必要となりますが、これは
>  DataGridView.Columns(colIndex).Width
> などから算出する事ができます。

魔界の仮面弁士さま

ご教授ありがとうございます。列ヘッダはPaintイベントのみでしか取れないと
思いこんでいました・・・

おかげで目的のものが作れます。ありがとうございました。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板