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

わんくま同盟

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

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


(過去ログ 22 を表示中)
■9506 / )  テキストボックスの日本語文字ずれ(至急)
□投稿者/ flyboy (1回)-(2007/10/29(Mon) 13:30:22)

分類:[.NET 全般] 

この問題に悩んでいます。
windows2000&VB6.0

テキストボックスに日本語文字を表示する時に、テキストボックスのフォントはMSゴシックに設定済み。英数字記号は下記問題ないみたいです。
Text6.Text = Text6.Text & fStrCut(strArry(0), 18) & "|" & vbNewLine

実行した時、Text6.Textの表示:

奥田 喜美枝      |
浜川 智子        |
テスト 016ノ2|

文字がそれてますね。何でぞれぞれの行の長さは違う感じですか。フォントの問題ですか?私はMSゴシックに設定しますね。上記の表示されているテキストをメモ帳にコピーして、メモ帳のフォントもMSゴシックに設定して、正しく現れます。
皆様、教えていただけませんか?




fStrCutについて
文字列を指定の幅にカットの役割で、半角・全角の混在する文字列を同じ半角換算文字長で取り出します。
最後の文字が漢字で、漢字分断がおきたら、半角スペースを付加し、対象文字数が少ない場合は、スペースを補います。
ソースコード:
Private Function fStrCut(ByRef CutTxt As String, _
             ByVal CutLen As Long) As String
'半角・全角の混在する文字列を半角換算文字長で取り出し
  Dim myLen As Long, SysCodeTxt As String
  SysCodeTxt = StrConv(CutTxt, vbFromUnicode)   '文字列を変換
  myLen = LenB(SysCodeTxt)  '半角換算のバイト数を取得
  If myLen <= CutLen Then   '指定の長さより短い場合
    fStrCut = CutTxt & Space$(CutLen - myLen)  '足りない分はスペースで
  Else  '該当の文字列の方が長い場合、指定のバイトでカットする
    fStrCut = StrConv(LeftB$(SysCodeTxt, CutLen), vbUnicode)
    If InStr(fStrCut, vbNullChar) > 0 Then
      '漢字1バイト目で分断された場合の処理
      fStrCut = Left$(fStrCut, InStr(fStrCut, vbNullChar) - 1) & " "
    End If
  End If
End Function



返信 編集キー/


管理者用

- Child Tree -