richtextbox的使用

        private void initTxtDiff()
        {
            DirectoryInfo di = new DirectoryInfo(curStdPath);
            string stdcase="";
            foreach (FileInfo file in di.GetFiles())
            {
                if (file.Extension == ".uof")
                {
                    stdcase=file.FullName;
                    break;
                }
            }

            di = new DirectoryInfo(curUofPath);
            string uofFile = "";
            foreach (FileInfo file in di.GetFiles())
            {
                if (file.Extension == ".uof")
                {
                    uofFile = file.FullName;
                    break;
                }
            }

            List<int> color1 = new List<int>();
            List<int> color2 = new List<int>();
            List<String> textlist1 = new List<String>();
            List<String> textlist2 = new List<String>();
            StreamReader srStdCase = new StreamReader(stdcase, System.Text.Encoding.GetEncoding("UTF-8"));
            string line;
            while ((line = srStdCase.ReadLine()) != null)
            {
                textlist1.Add(line);
            }
            StreamReader srTest = new StreamReader(uofFile, System.Text.Encoding.GetEncoding("UTF-8"));
            while ((line = srTest.ReadLine()) != null)
            {
                textlist2.Add(line);
            }
            srStdCase.Close();
            srTest.Close();

            int length = textlist1.Count <= textlist2.Count ? textlist1.Count : textlist2.Count;
            for (int i = 0; i < length; i++)
            {
                int exist1 = richTextBox1.Text.Length;
                int exist2 = richTextBox2.Text.Length;
                richTextBox1.Text += textlist1[i] + "/n";
                richTextBox2.Text += textlist2[i] + "/n";//最后一行需要剪裁
                if (!textlist1[i].Equals(textlist2[i]))
                {
                    color1.Add(exist1);
                    color1.Add(textlist1[i].Length);
                    color2.Add(exist2);
                    color2.Add(textlist2[i].Length);
                }    
            }

            if (textlist1.Count > length)
            {
                int exist = richTextBox1.Text.Length;
                for (int i = length; i < textlist1.Count; i++)
                {
                    richTextBox1.Text += textlist1[i] + "/n";
                }
                int alen = richTextBox1.Text.Length - 1;//最后一行的换行符不算
                color1.Add(exist);
                color1.Add(alen - exist);
            }
            else
            {
                int exist = richTextBox2.Text.Length;
                for (int i = length; i < textlist2.Count; i++)
                {
                    richTextBox2.Text += textlist2[i] + "/n";
                }
                int alen = richTextBox2.Text.Length - 1;//最后一行的换行符不算
                color2.Add(exist);
                color2.Add(alen - exist);
            }
            richTextBox1.Text = richTextBox1.Text.Substring(0, richTextBox1.Text.Length - 1);
            richTextBox2.Text = richTextBox2.Text.Substring(0, richTextBox2.Text.Length - 1);

            //最后着色,因为当文本改变时,高亮会消失。
            for (int i = 0; i < color1.Count; i += 2)
            {
                richTextBox1.Select(color1[i], color1[i + 1]);
                richTextBox1.SelectionBackColor = Color.Red;
            }
            for (int i = 0; i < color2.Count; i += 2)
            {
                richTextBox2.Select(color2[i], color2[i + 1]);
                richTextBox2.SelectionBackColor = Color.Red;
            }
        }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值