为ExRichTextBox扩展增加GIF格式图片
ExRichTextBox扩展
ExRichTextBox扩展是肯迪斯·戈登(Khendys Gordon)在2003 年 7 月 14 日发表的扩展RichTextBox控件,它可以不使用剪贴板的方式插入图片到ExRichTextBox文本框中
1、它允许以编程方式插入纯文本。
2、允许字体,文本颜色,并突出显示颜色(文本的背景颜色)被指定 当插入或添加纯文本的内容RichTextBox。
3、允许插入图像编程方式不使用剪贴板。
下载网站如下:https://www.codeproject.com/Articles/4544/Insert-Plain-Text-and-Images-into-RichTextBox-at-R?msg=1278295#xx1278295xx
对ExRichTextBox扩展的更新
ExRichTextBox在发表以来没有更新过,也有它明显的不足就是插入图片过大会产生内存泄露的问题。笔者根据肯迪斯·戈登(Khendys Gordon)的ExRichTextBox为蓝本修改了如下 内容
1、增加了中文显示
2、修改了添加图片内存泄露的BUG
3、增加了GIF图片显示
4、增加了鼠标滚动轮滚动GIF图片不能跟随
下面展示一些 内联代码片
。
#region 重写鼠标轮
protected override void OnMouseWheel(MouseEventArgs e)
{
// 向基类注册事件。
base.OnMouseWheel(e);
GetRichTextObjRectangle();
}
#endregion
5、增加了超连接支持
6、重写WndProc
下面展示一些 内联代码片
。
#region 重写WndProc
/// <summary>
/// 重写
/// </summary>
/// <param name="m"></param>
protected override void WndProc(ref Message m)
{
switch (m.Msg)
{
//要求一个窗口重画自己
case WM_PAINT:
{
foreach (Control _SubControl in base.Controls)
{
_SubControl.Tag = "1";
}
GetRichTextObjRectangle();
for (int i = 0; i != base.Controls.Count; i++)
{
if (base.Controls[i].Tag.ToString() == "1")
{
base.Controls.RemoveAt(i);
i--;
}
}
break;
}
//获取焦点
case WM_SETFOCUS:
{
//this.ImeMode = System.Windows.Forms.ImeMode.KatakanaHalf;
break;
}
default:
break;
}
base.WndProc(ref m);
}
#endregion