zoukankan      html  css  js  c++  java
  • RichTextBox

    MyRichTextBox自定义控件继承原来的控件

    然后说说几个实用方法

    public partial class MyRichTextBox : RichTextBox
    
    //打开链接
    this.LinkClicked += MyRichTextBox_LinkClicked;
    private void MyRichTextBox_LinkClicked(object sender, LinkClickedEventArgs e)
        {
            System.Diagnostics.Process.Start(e.LinkText);
        }
    
    // 保存
    if (System.IO.Path.GetExtension(strFilename).ToLower().Equals(".rtf"))
                    this.SaveFile(strFilename);
                else
                    this.SaveFile(strFilename, RichTextBoxStreamType.PlainText);
    
    //查找
     private List<int> searchResult = new List<int>();
     public int searchString(string searchString, System.Drawing.Color color)
        {
            searchResult.Clear();
    
            this.Select(0, this.Text.Length);
            this.SelectionColor = System.Drawing.Color.Black;
            int index;
    
            //第一次搜索
            //index = this.Text.IndexOf(searchString);
            index = this.Find(searchString, RichTextBoxFinds.MatchCase);
    
            //这个标志是滚动到第一个搜索项
            int flag = index;
    
            while (index != -1)
            {
                this.Select(index, searchString.Length);
                this.SelectionColor = color;
    
                index = this.Find(searchString, index + 1, RichTextBoxFinds.MatchCase);
                //index = this.Text.IndexOf(searchString, index + 1);
                if (index != -1)
                {
                    searchResult.Add(index);
                }
            }
    
            if (flag != -1)
            {
                this.Select(flag, searchString.Length);
            }
            //移动到插入符号
            this.ScrollToCaret();
    
            if (flag == -1)
            {
                return 0;
            }
            else
            {
                return searchResult.Count + 1;
            }
        }
    
        /// <summary>
        /// 滚动
        /// </summary>
        public void ScrollPosition()
        {
            if (searchResult.Count > 0)
            {
                while (this.SelectionStart > searchResult[0])
                {
                    //this.Select(searchResult[0], 1);
                    //this.ScrollToCaret();
                    searchResult.RemoveAt(0);
                }
                this.Select(searchResult[0], 1);
                this.ScrollToCaret();
                searchResult.RemoveAt(0);
            }
            else
            {
                MessageBox.Show("已经是最后一个");
            }
        }

    本来想做代码折叠 但是百度了一下没有能用的代码
    代码折叠的思路都是继承control 然后自己在paint方法中画字符串,
    都是调用的gdi的drawingstring,这样的话很多方法还得自己写,而且原来项目用richitextbox的地方改动很大,
    希望高手指点,有没有richtextbox能实现代码折叠的。

  • 相关阅读:
    AJAX实例演示加载xml
    入门AJAX总结
    My97 DatePicker一款好用的日历控件
    SQL Server 安装错误 错误代码:0x800F0906的解决方案
    JS实现动态添加和删除DIV
    .Net之路(九).ashx来实现ajax用户名的验证
    善良公社项目总结之如何从前台向后台传输数据
    MySQL数据分析(16)— 数据操作之增删改查
    字典-Python基础前传(9)
    MYSQL之事务
  • 原文地址:https://www.cnblogs.com/frog2008/p/6508287.html
Copyright © 2011-2022 走看看