此时程序接收到了一句话,他要把该句话添加到richTextBox控件中,并给其中两个词“接受”、“拒绝”做成链接文本的样子,就像LinkLabel那样,单击它们,分别引发Accept()和Decline()两个事件。如何实现?  
       注意:链接文本是在程序运行时添加的.

解决方案 »

  1.   

    这是在跳转事件里面做的
        Private Sub RichTextBox_LinkClicked(ByVal sender As Object, ByVal e As System.Windows.Forms.LinkClickedEventArgs) Handles RichTextBox.LinkClicked
            '点击Http链接!
            System.Diagnostics.Process.Start(e.LinkText)
        End Sub
      

  2.   

    C#
    private void RichTextBox_LinkClicked(object sender, System.Windows.Forms.LinkClickedEventArgs e)
    {
    //点击Http链接!
    System.Diagnostics.Process.Start(e.LinkText);
    }
    这时候,你不要直接引发链接的跳转——而是打开那个对话框,你就可以进行下一步的工作了。
    ==================================================================
    博客空间:http://blog.csdn.net/lovingkiss
    资源下载:http://download.csdn.net/user/lovingkiss
    优惠接单开发,组件控件定制开发,成品源代码批发
    联系方式:Q64180940 全天在线
    ==================================================================
      

  3.   

    //richTextBox1.DetectUrls = false; // 自动识别连接关闭
    using System.Runtime.InteropServices;[StructLayout(LayoutKind.Sequential, Pack = 4)]
    public class CHARFORMAT2A
    {
        public int cbSize;
        public int dwMask;
        public int dwEffects;
        public int yHeight;
        public int yOffset;
        public int crTextColor;
        public byte bCharSet;
        public byte bPitchAndFamily;
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 0x20)]
        public byte[] szFaceName = new byte[0x20];
        public short wWeight;
        public short sSpacing;
        public int crBackColor;
        public int lcid;
        public int dwReserved;
        public short sStyle;
        public short wKerning;
        public byte bUnderlineType;
        public byte bAnimation;
        public byte bRevAuthor;
    }[DllImport("user32.dll", CharSet = CharSet.Auto)]
    public static extern IntPtr SendMessage(IntPtr hWnd, int msg, int wParam,
        [In, Out, MarshalAs(UnmanagedType.LPStruct)] CHARFORMAT2A lParam);public const int CFE_LINK = 0x20;
    public const int CFM_LINK = 0x20;
    public const int EM_SETCHARFORMAT = 0x444;
    public const int SCF_SELECTION = 1;public string TextToRtf(string AText)
    {
        string vReturn = "";
        foreach(char vChar in AText)
        {
            switch(vChar)
            {
                case '\\': 
                    vReturn += @"\\";
                    break;
                case '{': 
                    vReturn += @"\{";
                    break;
                case '}': 
                    vReturn += @"\}";
                    break;
                default:
                    if (vChar > (char)127)
                        vReturn += @"\u" + ((int)vChar).ToString() + "?";
                    else vReturn += vChar;
                    break;
            }
        }
        return vReturn;
    }private void button1_Click(object sender, EventArgs e)
    {
        string insertText = @"床上等你";
        string insertLink = @"#http://www.csdn.net";
        string insertRtf = @"{\rtf1 " +
            TextToRtf(insertText) + @"\v " + TextToRtf(insertLink) + @"\v0}";
        int start = richTextBox1.SelectionStart;
        richTextBox1.SelectedRtf = insertRtf;
        richTextBox1.SelectionStart = start;
        richTextBox1.SelectionLength = insertText.Length + insertLink.Length;
        CHARFORMAT2A vCharFormat2a = new CHARFORMAT2A();
        vCharFormat2a.cbSize = Marshal.SizeOf(typeof(CHARFORMAT2A));
        vCharFormat2a.dwMask = CFM_LINK;
        vCharFormat2a.dwEffects = CFE_LINK;
        SendMessage(richTextBox1.Handle, EM_SETCHARFORMAT, SCF_SELECTION,
            vCharFormat2a);
    }private void richTextBox1_LinkClicked(object sender, LinkClickedEventArgs e)
    {
        MessageBox.Show(e.LinkText.Substring(e.LinkText.IndexOf('#')));
    }