richtextbox控件插入链接代码分享

论坛 期权论坛 脚本     
niminba   2021-5-23 02:29   905   0

复制代码 代码如下:

using System;
using System.ComponentModel;
using System.Drawing;
using System.Windows.Forms;
using System.Runtime.InteropServices;

namespace RichTextBoxLinks
{
 public class RichTextBoxEx : RichTextBox
 {
  #region Interop-Defines
  [ StructLayout( LayoutKind.Sequential )]
  private struct CHARFORMAT2_STRUCT
  {
   public UInt32 cbSize;
   public UInt32   dwMask;
   public UInt32   dwEffects;
   public Int32    yHeight;
   public Int32    yOffset;
   public Int32 crTextColor;
   public byte     bCharSet;
   public byte     bPitchAndFamily;
   [MarshalAs(UnmanagedType.ByValArray, SizeConst=32)]
   public char[]   szFaceName;
   public UInt16 wWeight;
   public UInt16 sSpacing;
   public int  crBackColor; // Color.ToArgb() -> int
   public int  lcid;
   public int  dwReserved;
   public Int16 sStyle;
   public Int16 wKerning;
   public byte  bUnderlineType;
   public byte  bAnimation;
   public byte  bRevAuthor;
   public byte  bReserved1;
  }

  [DllImport("user32.dll", CharSet=CharSet.Auto)]
  private static extern IntPtr SendMessage(IntPtr hWnd, int msg, IntPtr wParam, IntPtr lParam);

  private const int WM_USER    = 0x0400;
  private const int EM_GETCHARFORMAT  = WM_USER+58;
  private const int EM_SETCHARFORMAT  = WM_USER+68;

  private const int SCF_SELECTION = 0x0001;
  private const int SCF_WORD  = 0x0002;
  private const int SCF_ALL  = 0x0004;

  #region CHARFORMAT2 Flags
  private const UInt32 CFE_BOLD  = 0x0001;
  private const UInt32 CFE_ITALIC  = 0x0002;
  private const UInt32 CFE_UNDERLINE = 0x0004;
  private const UInt32 CFE_STRIKEOUT = 0x0008;
  private const UInt32 CFE_PROTECTED = 0x0010;
  private const UInt32 CFE_LINK  = 0x0020;
  private const UInt32 CFE_AUTOCOLOR = 0x40000000;
  private const UInt32 CFE_SUBSCRIPT = 0x00010000;  /* Superscript and subscript are */
  private const UInt32 CFE_SUPERSCRIPT= 0x00020000;  /*  mutually exclusive    */

  private const int CFM_SMALLCAPS  = 0x0040;   /* (*) */
  private const int CFM_ALLCAPS  = 0x0080;   /* Displayed by 3.0 */
  private const int CFM_HIDDEN  = 0x0100;   /* Hidden by 3.0 */
  private const int CFM_OUTLINE  = 0x0200;   /* (*) */
  private const int CFM_SHADOW  = 0x0400;   /* (*) */
  private const int CFM_EMBOSS  = 0x0800;   /* (*) */
  private const int CFM_IMPRINT  = 0x1000;   /* (*) */
  private const int CFM_DISABLED  = 0x2000;
  private const int CFM_REVISED  = 0x4000;

  private const int CFM_BACKCOLOR  = 0x04000000;
  private const int CFM_LCID   = 0x02000000;
  private const int CFM_UNDERLINETYPE = 0x00800000;  /* Many displayed by 3.0 */
  private const int CFM_WEIGHT  = 0x00400000;
  private const int CFM_SPACING  = 0x00200000;  /* Displayed by 3.0 */
  private const int CFM_KERNING  = 0x00100000;  /* (*) */
  private const int CFM_STYLE   = 0x00080000;  /* (*) */
  private const int CFM_ANIMATION  = 0x00040000;  /* (*) */
  private const int CFM_REVAUTHOR  = 0x00008000;


  private const UInt32 CFM_BOLD  = 0x00000001;
  private const UInt32 CFM_ITALIC  = 0x00000002;
  private const UInt32 CFM_UNDERLINE = 0x00000004;
  private const UInt32 CFM_STRIKEOUT = 0x00000008;
  private const UInt32 CFM_PROTECTED = 0x00000010;
  private const UInt32 CFM_LINK  = 0x00000020;
  private const UInt32 CFM_SIZE  = 0x80000000;
  private const UInt32 CFM_COLOR  = 0x40000000;
  private const UInt32 CFM_FACE  = 0x20000000;
  private const UInt32 CFM_OFFSET  = 0x10000000;
  private const UInt32 CFM_CHARSET = 0x08000000;
&nbsT"VffV7B#'7f#'7ff4$dC%T5B6b4$dC%T5B#'7ff6b6RT"'6

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:1060120
帖子:212021
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP