C# FastColoredTextBox 控件常见问题及修改
今天是19年10月18日 也是第一次写文章 以后也会养成一个遇到问题解决问题后写篇博客或文章的习惯 感谢知乎提供的该服务 话不多说 我们来讲正题
FastColoredTextBox常见问题
- FastColoredTextBox输入中文异常 (拿demo窗口第一行第一个讲解 后面全是)刚打开没有进行任何设置时 该编辑器只能输入英文 如下图
![v2-181e6097ef7097b087d9522303882792_b.jpg](http://img-03.proxy.5ce.com/view/image?&type=2&guid=0faa4c86-3d2a-eb11-8da9-e4434bdf6706&url=https://pic3.zhimg.com/v2-181e6097ef7097b087d9522303882792_b.jpg)
然后我们修改一个属性(改为On等其他 只要不是Off应该都可以)
![v2-e23eaec7da4c8c62b2642c26abe2276e_b.jpg](http://img-03.proxy.5ce.com/view/image?&type=2&guid=0faa4c86-3d2a-eb11-8da9-e4434bdf6706&url=https://pic3.zhimg.com/v2-e23eaec7da4c8c62b2642c26abe2276e_b.jpg)
修改完成后可以输入中文了 但明显可以看出中文显示异常:
![v2-09736cef70642a69d103c6fbb1393f84_b.jpg](http://img-03.proxy.5ce.com/view/image?&type=2&guid=0faa4c86-3d2a-eb11-8da9-e4434bdf6706&url=https://pic1.zhimg.com/v2-09736cef70642a69d103c6fbb1393f84_b.jpg)
上图是修改前 下图为修改后
![v2-b6a2b85763a7d512b53f85cd62c6081f_b.jpg](http://img-03.proxy.5ce.com/view/image?&type=2&guid=0faa4c86-3d2a-eb11-8da9-e4434bdf6706&url=https://pic4.zhimg.com/v2-b6a2b85763a7d512b53f85cd62c6081f_b.jpg)
下面为修改指导 ->进入FastColoredTextBox.cs 找到大概119行的Draw方法体 下图
![v2-bbc7d81c5cbc7e4814806ef0a3012537_b.jpg](http://img-01.proxy.5ce.com/view/image?&type=2&guid=0faa4c86-3d2a-eb11-8da9-e4434bdf6706&url=https://pic4.zhimg.com/v2-bbc7d81c5cbc7e4814806ef0a3012537_b.jpg)
该方法是绘制编辑框内容,懂的人自然懂 不多说,去找中文绘制问题 我们只需要将它默认计算出来的K写死为1即可(具体为啥来着我给忘了)
![v2-c3a1af4e890ced3c4eaa2f39b4994e7e_b.jpg](http://img-03.proxy.5ce.com/view/image?&type=2&guid=0faa4c86-3d2a-eb11-8da9-e4434bdf6706&url=https://pic3.zhimg.com/v2-c3a1af4e890ced3c4eaa2f39b4994e7e_b.jpg)
将上图选中代码直接改为
float
![v2-77cfe1dbfe64e6b9106c9560af447de1_b.jpg](http://img-03.proxy.5ce.com/view/image?&type=2&guid=0faa4c86-3d2a-eb11-8da9-e4434bdf6706&url=https://pic2.zhimg.com/v2-77cfe1dbfe64e6b9106c9560af447de1_b.jpg)
运行结果:
![v2-b132bae0bf4026702428cdea29ccc8e2_b.jpg](http://img-02.proxy.5ce.com/view/image?&type=2&guid=0faa4c86-3d2a-eb11-8da9-e4434bdf6706&url=https://pic3.zhimg.com/v2-b132bae0bf4026702428cdea29ccc8e2_b.jpg)
显示正常中文修改完成 再改完中文显示后又发现一个问题 中文输入多了 窗体不管是进行什么操作都会克顿 cpu占用超过20 这也就是发现的问题第二个
2.FastColoredTextBox中文过多界面操作卡顿问题
该控件每次滑动滚动条或输入时都会进行重新绘制 每次重新绘制都会计算每个字符的长度 这也就是卡顿关键 修改意见:(有两处需要修改)
![v2-f3d8fe93f9f2830095359974fe21b93a_b.jpg](http://img-02.proxy.5ce.com/view/image?&type=2&guid=0faa4c86-3d2a-eb11-8da9-e4434bdf6706&url=https://pic3.zhimg.com/v2-f3d8fe93f9f2830095359974fe21b93a_b.jpg)
修改为:
![v2-31033c5c94aef1033adf0baa046735f6_b.jpg](http://img-03.proxy.5ce.com/view/image?&type=2&guid=0faa4c86-3d2a-eb11-8da9-e4434bdf6706&url=https://pic3.zhimg.com/v2-31033c5c94aef1033adf0baa046735f6_b.jpg)
即可解决卡顿问题 该修改位置为:
![v2-92485e47477a9c2350b53a19cfa86786_b.jpg](http://img-03.proxy.5ce.com/view/image?&type=2&guid=0faa4c86-3d2a-eb11-8da9-e4434bdf6706&url=https://pic3.zhimg.com/v2-92485e47477a9c2350b53a19cfa86786_b.jpg)
该文章会持续更新该控件发现问题和解决方案 另外附上修改后源码github地址:
duanxingji/FastColoredTextBoxgithub.com![v2-6df55e65938294103d60c209f50653f8_ipico.jpg](http://img-01.proxy.5ce.com/view/image?&type=2&guid=0faa4c86-3d2a-eb11-8da9-e4434bdf6706&url=https://pic1.zhimg.com/v2-6df55e65938294103d60c209f50653f8_ipico.jpg)
修改的地方有:中文修复 中文数量多卡顿问题 代码补全功能(代码补全提示参考文本为运行目录下config.txt) 鼠标悬停代码提示 点击代码弹出窗体等 拿走代码请点一个小星星。谢谢
![v2-d0872f452ad20f0c4a966b2b071997aa_b.jpg](http://img-03.proxy.5ce.com/view/image?&type=2&guid=0faa4c86-3d2a-eb11-8da9-e4434bdf6706&url=https://pic3.zhimg.com/v2-d0872f452ad20f0c4a966b2b071997aa_b.jpg)