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

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

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

Re[2]: テキストボックスの日本語文字ずれ(至急)


(過去ログ 22 を表示中)

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

■9506 / inTopicNo.1)  テキストボックスの日本語文字ずれ(至急)
  
□投稿者/ 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



引用返信 編集キー/
■9509 / inTopicNo.2)  Re[1]: テキストボックスの日本語文字ずれ(至急)
□投稿者/ 魔界の仮面弁士 (495回)-(2007/10/29(Mon) 13:55:15)
No9506 (flyboy さん) に返信
> テキストボックスに日本語文字を表示する時に、テキストボックスのフォントはMSゴシックに設定済み。

「MSゴシック」というフォントは用意されていません。
「MS ゴシック」に変更してみてください。

'Text1.Font.Name = "MSゴシック"
Text1.Font.Name = "MS ゴシック"

> 何でぞれぞれの行の長さは違う感じですか。
間違ったフォントを選ぶと、別のフォントで代替されます。
フォント名に間違いが無いのにズレが発生するのであれば、固定幅フォントを選択し、
かつ、フォントサイズを 9, 12, 15 などにすれば揃うかと思います。
(Windows XP 以降であれば、他のフォントサイズでも揃います)
引用返信 編集キー/
■9512 / inTopicNo.3)  Re[2]: テキストボックスの日本語文字ずれ(至急)
□投稿者/ flyboy (2回)-(2007/10/29(Mon) 14:25:46)
No9509 (魔界の仮面弁士 さん) に返信
> ■No9506 (flyboy さん) に返信
>>テキストボックスに日本語文字を表示する時に、テキストボックスのフォントはMSゴシックに設定済み。
>
> 「MSゴシック」というフォントは用意されていません。
> 「MS ゴシック」に変更してみてください。
>
> 'Text1.Font.Name = "MSゴシック"
> Text1.Font.Name = "MS ゴシック"
>
>>何でぞれぞれの行の長さは違う感じですか。
> 間違ったフォントを選ぶと、別のフォントで代替されます。
> フォント名に間違いが無いのにズレが発生するのであれば、固定幅フォントを選択し、
> かつ、フォントサイズを 9, 12, 15 などにすれば揃うかと思います。
> (Windows XP 以降であれば、他のフォントサイズでも揃います)

魔界の仮面弁士 さん、ありがとうございました!
やっぱりフォントサイズの問題だ!私はフォントサイズを11に設定したせいで、ダメなんです。







解決済み
引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -