HIRO's.NET

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

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

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

HIRO's.NET RSSHIRO's.NET RSS


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

HOME > C# 2005 Tips > コントロール > RichTextBox Tips メニュー

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

UPDATE:2006/10/31 

<< 前のTips  次のTips >>

 

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

 
サンプル
private const uint IMF_DUALFONT = 0x80;
private const uint WM_USER = 0x0400;
private const uint EM_SETLANGOPTIONS = WM_USER + 120;
private const uint EM_GETLANGOPTIONS = WM_USER + 121;

[System.Runtime.InteropServices.DllImport("USER32.dll")]
private static extern uint SendMessage(
    System.IntPtr hWnd, 
    uint msg, 
    uint wParam, 
    uint lParam); 

/// <summary>
/// リッチエディットボックスのフォントが勝手に変わるのを抑制する
/// </summary>
/// <param name="RichTextBoxCtrl">フォントが勝手に変わるのを抑制するリッチテキストボックス</param>
private void NoRichTextChange(RichTextBox RichTextBoxCtrl)
{
    uint lParam;
    lParam = SendMessage(RichTextBoxCtrl.Handle, EM_GETLANGOPTIONS, 0, 0);
    lParam &= ~IMF_DUALFONT; 
    SendMessage(RichTextBoxCtrl.Handle, EM_SETLANGOPTIONS, 0, lParam);
}

private void Form1_Load(object sender, EventArgs e)
{
    //richTextBox1のフォントが勝手に変わるのを抑制する
    NoRichTextChange(richTextBox1);
}
 

<< 前のTips  次のTips >>