吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 675|回复: 2
收起左侧

[C&C++ 原创] Console.WriteLine转发到richTextbox的代码完善重复输出的代码

[复制链接]
lookat 发表于 2024-1-20 07:48
本帖最后由 lookat 于 2024-1-20 07:51 编辑



睡醒试了试那代码容易出现死循环转发至richtextbox中

链接:https://www.52pojie.cn/thread-1882186-1-1.html
C#控制台内容重定向到richTextBox中

不过没关系有解决办法
首先是这俩自定义的方法
加这俩方法就是可以以防万一了
[C#] 纯文本查看 复制代码
 
 //关闭rich文本改动检测
        private void DisableTextChangedEvent(RichTextBox richTextBox)
        {
            richTextBox.TextChanged -= richTextBox1_TextChanged;
        }
        //开启rich文本改动检测
        private void EnableTextChangedEvent(RichTextBox richTextBox)
        {
            richTextBox.TextChanged += richTextBox1_TextChanged;
        }

具体使用就是
[C#] 纯文本查看 复制代码
 
 //rich字数检测
        private void RichStartIndexLength(RichTextBox richTextBox)
        {
//(因为我的richTextBox1_TextChanged里面有好多Console.WriteLine所以就给下面修改内容时套了个禁用)
//就是修改文本时给禁用就不会触发了
//根据实际情况用别的办法也行,反正办法很多
/////////////这种使用格式//////////////////
            //DisableTextChangedEvent(richTextBox);
            //Console.WriteLine("启用字数检测");
            //EnableTextChangedEvent(richTextBox);

            // 获取RichTextBox1的最大字符数量
            toolStripStatusLabel3.Text = richTextBox.MaxLength.ToString();

            // 获取RichTextBox1的当前字符数量
            toolStripStatusLabel5.Text = richTextBox.Text.Length.ToString();

            // 计算当前字符数量占最大字符数量的百分比
            double percentage = Math.Round((double)richTextBox.Text.Length / richTextBox.MaxLength * 100, 2);

            // 检查是否达到最大值的70%
            if (percentage >= 70 && percentage <= 90)
            {
                // 字体颜色变为橘黄色
                toolStripStatusLabel4.ForeColor = Color.Orange;
                toolStripStatusLabel5.ForeColor = Color.Orange;
            }
            // 检查是否达到最大值的90%
            else if (percentage >= 90)
            {
                // 字体颜色变为红色
                toolStripStatusLabel4.ForeColor = Color.Red;
                toolStripStatusLabel5.ForeColor = Color.Red;
            }
            // 否则,字体颜色恢复为默认颜色
            else
            {
                toolStripStatusLabel4.ForeColor = Color.Green;
                toolStripStatusLabel5.ForeColor = Color.Green;
            }

            // 获取当前文本
            string text = richTextBox.Text;

            // 检查文本长度是否超过最大值
            DisableTextChangedEvent(richTextBox);
            while (text.Length > richTextBox.MaxLength)
            {
                int endOfFirstLine = text.IndexOf("\n");
                if (endOfFirstLine == -1)
                {
                    // 如果没有找到换行符,说明只有一行,直接截断
                    richTextBox.Text = text.Substring(0, richTextBox.MaxLength);
                    break;
                }
                else
                {
                    // 删除第一行
                    text = text.Remove(0, endOfFirstLine + 1);
                    richTextBox.Text = text;
                }
            }
            EnableTextChangedEvent(richTextBox);
        }

就是先把文字检测从richTextBox1_TextChanged里面剥离出来
然后加上这俩方法就可以避免了
如果想修改文本不触发TextChanged事件
可以在修改文本之前临时禁用TextChanged事件 修改后重新启用它

然后就是在load窗口时加入计时器方法调用
[C#] 纯文本查看 复制代码
// 字数检测计时器
        private System.Windows.Forms.Timer _richBox1_timer;
        private void RichTimeStart()
        {
            _richBox1_timer = new System.Windows.Forms.Timer();
            _richBox1_timer.Interval = 1000; // 1秒
            _richBox1_timer.Tick += new EventHandler(OnTimedEvent);
            _richBox1_timer.Start();
        }
        private void OnTimedEvent(Object myObject, EventArgs myEventArgs)
        {
            AutoMethod();
        }
        private void AutoMethod()
        {
            RichStartIndexLength(richTextBox1);
        }


免费评分

参与人数 1吾爱币 +7 热心值 +1 收起 理由
苏紫方璇 + 7 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

Maxmeteor 发表于 2024-4-12 11:04
你这方法主要是对已经存在大文本的内容做颜色和长度范围内滚动显示吧
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止灌水或回复与主题无关内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-4-29 06:20

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表