• ベストアンサー

データグリッドビューの結合セルに文字を表示させたい

VB2010にて、データグリッドビューのセル(0,0)と(1,0)を結合して、 「dimensional data」と表示させたいです。 以下のコードでセル結合まではできたのですが、 セル(0,0)に「dimensi...」と表示されてしまい、文字が2つのセルをまたがってくれません。 どうしたらよろしいでしょうか。 ご存知の方教えてください。どうぞよろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • MARU4812
  • ベストアンサー率43% (196/452)
回答No.2

> ペイントで右の境界線を消しただけです。 それは単純に「セル結合できてない」って言うのでは? 結合の機能はありませんので、自前でセルの文字を 描画して下さい。 セル自前描画のサンプルは WEB 上にいくつか公開されていますが、 セル結合そのもののコードは C# のが分かりやすかったです。 http://pub.ne.jp/arayan/?entry_id=2166972 CellPainting イベントを利用する際は、Graphics オブジェクトは (引数より)システムが用意したものを流用するので問題ありませんが、 new Pen ~の部分など、自前で用意した描画オブジェクトは Dispose するように改良した方がいいです。 そのあたりの処理は、以下のサンプルのほうが優秀です。 http://dobon.net/vb/dotnet/datagridview/ownerdrawcell.html ※ C# のコードでは using を使っています。

ddtqp
質問者

お礼

回答ありがとうございます。 現状を理解できました。 Graphicsで文字を描画してみます。

その他の回答 (1)

  • tissue001
  • ベストアンサー率21% (28/132)
回答No.1

datagridviewのセルが結合出来ることを初めて知りました。 私もなんどか出来ないかと考えた事がありました。 質問者様の求めている答えではありませんが、こんな方法で私は解決致しました。 データセットをデータグリッドビューのソースとしている場合、 最初から2つの列を結合してそれをデータセットにセットするという方法です。 テーブル1に 氏名とフリガナがある場合、 クエリで、フリガナ + chr(13) + chr(10) + 氏名 AS [氏名_フリガナ] のように[氏名_フリガナ]という列を作っておき、それをデータグリッドビューにセットするというのはいかがでしょうか?

ddtqp
質問者

補足

すみません。コードを載せるの忘れていました。 ペイントで右の境界線を消しただけです。 Private Sub DGV1_CellPainting(ByVal sender As Object, ByVal e As DataGridViewCellPaintingEventArgs) Handles DataGridView1.CellPainting 'セルの右側の境界線を消す If e.ColumnIndex = 0 And e.RowIndex = 0 Then e.AdvancedBorderStyle.Right = DataGridViewAdvancedCellBorderStyle.None End If End Sub

関連するQ&A