HIRO's.NET

VB.NET, C#, PowerShell Tipsサイト

 VB.NET, C#, PowerShellを使用しているエンジニアのためのサイト。

 基本的な使用方法から開発で役立つTipsまで幅広く取り扱っています。

HIRO's.NET RSSHIRO's.NET RSS


VB.NET 2005の開発でお困りのことはありませんか?
そんな悩みは当サイトで解決!!

HOME > VB.NET 2005 Tips > コントロール > RichTextBox Tips メニュー

13.フォントが勝手に変更されるのを抑制する

UPDATE:2006/10/31 

<< 前のTips  次のTips >>

 

 RichTextBoxのフォントプロパティに「MSゴシック」等を設定しても、別のフォント(おそらくArial)に勝手に変更されてしまいます。これを抑制するにはSendMessageを使用します。
 サンプルではフォームにRichTextBoxを2つ貼り付け、RichTextBox1側にだけ、フォントが勝手に変更されるのを抑制しています。

 
サンプル
Private Const IMF_DUALFONT As Integer = &H80
Private Const WM_USER As Integer = &H400
Private Const EM_SETLANGOPTIONS As Integer = (WM_USER + 120)
Private Const EM_GETLANGOPTIONS As Integer = (WM_USER + 121)

<System.Runtime.InteropServices.DllImport("User32.dll", EntryPoint:="SendMessageA")> _
Private Shared Function SendMessage( _
     ByVal hWnd As System.IntPtr, _
     ByVal wMsg As Integer, _
     ByVal wParam As Integer, _
     ByVal lParam As Integer _
    ) As Integer
End Function

''' <summary>
''' リッチエディットボックスのフォントが勝手に変わるのを抑制する
''' </summary>
''' <param name="RichTextBoxCtrl">フォントが勝手に変わるのを抑制するリッチテキストボックス</param>
''' <remarks></remarks>
Private Sub NoRichTextChange(ByVal RichTextBoxCtrl As RichTextBox)
    Dim lParam As Integer
    lParam = SendMessage(RichTextBoxCtrl.Handle, EM_GETLANGOPTIONS, 0, 0)
    lParam = lParam And (Not IMF_DUALFONT)
    SendMessage(RichTextBoxCtrl.Handle, EM_SETLANGOPTIONS, 0, lParam)
End Sub

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    'RichTextBoxのフォントが勝手に変わるのを抑制する
    NoRichTextChange(RichTextBox1)
End Sub
 

<< 前のTips  次のTips >>