likaikk 2024-04-15 17:42 采纳率: 50%
浏览 3
已结题

winForm英文显示换行时英文单词被拆开

C#winform中用什么控件显示英文时,在自动换情况下 ,换行时英文单词不会被拆开?
目前我用label或者richtextbox设置为自动换行,在换行时英文单词被拆开成上下两行显示了
无法识别为一个单词么

  • 写回答

3条回答 默认 最新

  • GISer Liu 2024-04-15 18:19
    关注

    该回答引用自GPT-3.5,由博主GISer Liu编写:

    针对你的问题,我理解你希望在 C# WinForm 应用程序中,当显示英文文本时,避免在自动换行时将英文单词拆分成上下两行显示。目前你使用的是 Label
    或 RichTextBox 控件,但在自动换行时,英文单词被拆开成了上下两行显示,导致单词无法被识别。
    针对这个问题,我给出以下解决思路和方案:

    解决思路:

    1. 使用自定义控件: 可以考虑自定义一个控件,通过控制字符的显示位置来确保在换行时不会将英文单词拆开。
    2. 处理文本显示: 在显示文本之前,对文本进行处理,确保英文单词在换行时不会被拆分。这可以通过在单词之间插入非打印字符(如空格或零宽空格)来实现。

      解决方案:

      自定义控件:

      首先,创建一个自定义控件,并重写其绘制方法,确保在换行时不会将英文单词拆分。以下是一个简单的示例:
      csharpCopy code
      using System.Drawing;
      using System.Windows.Forms;
      public class CustomLabel : Label
      {
      protected override void OnPaint(PaintEventArgs e)
      {
      using (StringFormat format = new StringFormat())
      {
      format.Alignment = StringAlignment.Near;
      format.LineAlignment = StringAlignment.Near;
      format.Trimming = StringTrimming.Word;
      RectangleF layoutRectangle = new RectangleF(0, 0, this.Width, this.Height);
      e.Graphics.DrawString(this.Text, this.Font, new SolidBrush(this.ForeColor), layoutRectangle, format);
      }
      }
      }
      
      然后,使用这个自定义控件来显示英文文本,它会确保在换行时不会拆分英文单词。

      处理文本显示:

      另一个解决方案是在显示文本之前,对文本进行处理。你可以编写一个方法来检测英文单词,并在单词之间插入非打印字符,如空格或零宽空格。以下是一个简单的示例:
      csharpCopy code
      public string FixEnglishWordWrap(string text)
      {
      // 使用正则表达式匹配英文单词,并在单词之间插入空格
      string pattern = @"([a-zA-Z]+)";
      string replacement = "$1\u200B"; // 使用零宽空格
      string result = Regex.Replace(text, pattern, replacement);
      return result;
      }
      
      然后,在设置 Label 或 RichTextBox 的 Text 属性之前,先将文本传递给这个方法进行处理,确保在换行时不会拆分英文单词。
      以上是两种解决方案,你可以根据自己的需求选择其中之一来解决这个问题。希望这些信息对你有所帮助!

    如果该回答解决了您的问题,请采纳!如果没有,请私信联系或评论您的疑惑

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 4月24日
  • 已采纳回答 4月16日
  • 创建了问题 4月15日

悬赏问题

  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值
  • ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
  • ¥15 CSAPPattacklab
  • ¥15 一直显示正在等待HID—ISP
  • ¥15 Python turtle 画图
  • ¥15 关于大棚监测的pcb板设计
  • ¥15 stm32开发clion时遇到的编译问题
  • ¥15 lna设计 源简并电感型共源放大器
  • ¥15 如何用Labview在myRIO上做LCD显示?(语言-开发语言)
  • ¥15 Vue3地图和异步函数使用