C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[1]: VB.netでツールチップの整形


(過去ログ 133 を表示中)

[トピック内 2 記事 (1 - 2 表示)]  << 0 >>

■78318 / inTopicNo.1)  VB.netでツールチップの整形
  
□投稿者/ はむ (3回)-(2016/01/07(Thu) 17:25:39)

分類:[.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



引用返信 編集キー/
■78346 / inTopicNo.2)  Re[1]: VB.netでツールチップの整形
□投稿者/ くなーら (28回)-(2016/01/09(Sat) 11:56:52)

コードは読んでいないですし、条件に「この時どうするの?」ってのがありますが、
@カウント用変数を用意
A一文字ずつチェック
Bチェック後、有る場合はカウント用変数を初期化する
Cチェック後、無い場合はカウント用変数を+1する
Dカウント用変数が40まで達したら改行コード挿入
で駄目ですかね。

/*
ロジックの問題ですので、自力で思いついたほうが、後々を考えると良いのですが......
難しい問題の場合は小分けにして考える、モデルを作ってごちゃごちゃいじる、というのがオーソドックスでしょうか。
*/
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -