|
分類:[.NET 全般]
環境
Win7
VB2005
DataGridViewにてセルにポインタがフローした際にツールチップを表示させています。
40文字で改行させて表示させているのですが、40文字以内に改行コードがあると
崩れてしまう状態になっています。
これを、40文字以内に改行があればそこで改行する、40文字以内に改行コードがない場合は
40文字で改行させる方法を考えたのですが思いつきません。
何かお力添えをよろしくお願いします。
コードは以下のとおりです。
''内部変数宣言
Dim col As Integer = 0
Dim row As Integer = 0
Dim data As String = ""
Dim txt As String = ""
Dim lb_cnt As Integer = 0
Dim txt_start As Integer = 0
Dim txt_end As Integer = 50
Dim cnt_vbcrlf As Integer = 0
Dim dgv As DataGridView = DirectCast(sender, DataGridView)
''マウスがあるセル位置を取得する
col = e.ColumnIndex
row = e.RowIndex
''-1はヘッダーのためスルーする
If col <> -1 And row <> -1 Then
''セルのデータが空の場合はスルーする
If IsDBNull(dgv.Item(col, row).Value) = False Then
''セル位置を使用してデータの取得する
data = dgv.Item(col, row).Value
''100文字以上あれは入る
If data.Length >= 100 Then
''指定した文字数で改行するための回数を取得し、余りが発生する可能性があるため丸める。
lb_cnt = Math.Ceiling(data.Length / txt_end)
'ループで回す。
For i As Integer = 1 To lb_cnt
'If data.Length >= 0 Then
''指定文字数以下か判断して処理を行う。
If data.Length > txt_end Then
''指定文字ずつ改行コードを入れる。
txt += data.Substring(txt_start, txt_end) & vbCrLf
''指定文字ずつ削除していく
data = data.Remove(txt_start, txt_end)
Else
txt += data.Substring(txt_start, data.Length) & vbCrLf
End If
'End If
'Console.WriteLine(txt)
Next
End If
''セルのツールチップに改行したテキストを入れる。
dgv.Item(col, row).ToolTipText = txt
End If
End If
End Sub
|