夏が終わったと感じる瞬間って、どんな時?

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

A 回答 (2件)

> ペイントで右の境界線を消しただけです。


それは単純に「セル結合できてない」って言うのでは?

結合の機能はありませんので、自前でセルの文字を
描画して下さい。

セル自前描画のサンプルは WEB 上にいくつか公開されていますが、
セル結合そのもののコードは C# のが分かりやすかったです。
http://pub.ne.jp/arayan/?entry_id=2166972

CellPainting イベントを利用する際は、Graphics オブジェクトは
(引数より)システムが用意したものを流用するので問題ありませんが、
new Pen ~の部分など、自前で用意した描画オブジェクトは
Dispose するように改良した方がいいです。
そのあたりの処理は、以下のサンプルのほうが優秀です。
http://dobon.net/vb/dotnet/datagridview/ownerdra …
※ C# のコードでは using を使っています。
    • good
    • 0
この回答へのお礼

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

お礼日時:2011/03/24 16:09

datagridviewのセルが結合出来ることを初めて知りました。



私もなんどか出来ないかと考えた事がありました。

質問者様の求めている答えではありませんが、こんな方法で私は解決致しました。

データセットをデータグリッドビューのソースとしている場合、
最初から2つの列を結合してそれをデータセットにセットするという方法です。

テーブル1に 氏名とフリガナがある場合、
クエリで、フリガナ + chr(13) + chr(10) + 氏名 AS [氏名_フリガナ]
のように[氏名_フリガナ]という列を作っておき、それをデータグリッドビューにセットするというのはいかがでしょうか?

この回答への補足

すみません。コードを載せるの忘れていました。
ペイントで右の境界線を消しただけです。

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

補足日時:2011/03/22 17:21
    • good
    • 0

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

このQ&Aを見た人はこんなQ&Aも見ています