- ベストアンサー
リッチテキストボックスのタブ位置を変えたい
VSでC#のプログラムを作っています。 リッチテキストボックスにテキストファイルを読込んだのですが、タブ位置が8文字分になっているのを4文字(任意の文字数)に直したいのです。 うまい方法が見つからないので仕方なく空白4文字と 置き換えていますが、できればタブはそのまま残したいのです。 4文字タブにするにはどうすれば良いでしょうか。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
フォントの文字サイズからPixelサイズを得る についてですが、 http://www.microsoft.com/japan/msdn/windows/windowsxp/FixedPitchFont.asp によると 3の倍数のポイント数にフォントのサイズを設定してやれば、 int tabPixelSize =(int)(richTextBox1.Font.Size * 96/72/2*4);//4tab にしてやれば良いとわかりました。 この値を使うと、うまくいきます。(SelectionTabs でも) /* 96/72:全角文字幅 96/72/2:半角文字幅 96/72/2*4:半角4文字分の文字幅 */
その他の回答 (3)
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
#2>不思議なことにSelectionTabsの内容が初期状態ではゼロになっているのです。??? ほんとですね! マニュアルを読んで取得できるとあったので、それでうまくいくとおもっていました。 その後、MeasureStringを使ってフォントの文字サイズからPixelサイズを得るとか色々試してみましたが、 どういうわけかうまくいかなかったです。 検索してみたところ WinAPIでのサンプルを見つけました http://blog.mag2.com/m/log/0000104516/106832576.html 試してみたところでは、こちらはうまくいきました。 .NET でWinAPI を使うのはなんだかなぁって感じですが・orz
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
#1>タブ位置をピクセル数で設定するようになっているので使いにくいですね。 そうですね。 でも、 >タブ位置が8文字分になっているのを4文字 という状況であれば、 現在の状態を取得すれば、8文字タブになっているわけで、 4文字タブにするには、半分に 任意にするには、n/8にすればいいような気がします。
お礼
重ねての回答ありがとうございます。 実は同じことを考えていたのですが、不思議なことにSelectionTabsの内容が初期状態ではゼロになっているのです。??? いちおう適当な値(ピクセル)を代入して4文字タブを実現していますが、もっとちゃんとしたやり方をWinAPIあたりを使ってできないか調べているところです。
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
SelectionTabs を使ってタブ位置の設定をするとか
お礼
回答ありがとうございます。 SelectionTabsというプロパティはプロパティウィンドーには表示されていないので気付きませんでした。 ただ、タブ位置をピクセル数で設定するようになっているので使いにくいですね。 現在のフォント1文字をピクセル数に変換するメソッドとかがあったら教えていただけないでしょうか。
お礼
重ね重ねご親切な回答ありがとうございます。 おかげで解決することができとても助かりました。 教えていただいた各サイトの情報も有意義なものばかりで勉強になります。 本当にありがとうございました。