📅  最后修改于: 2023-12-03 15:08:53.005000             🧑  作者: Mango
在 C# 中,使用 MaskedTextBox 控件来输入格式化的文本非常方便。但是,有时候我们希望能够高亮显示某些文本,比如出现错误的文本或者特殊的关键字。这时候,我们可以使用 RichTextBox 控件来实现。
首先,需要为窗体添加一个 RichTextBox 控件。你可以直接从工具箱中拖拽一个 RichTextBox 控件到窗体上,或者使用代码来创建一个控件:
RichTextBox richTextBox1 = new RichTextBox();
this.Controls.Add(richTextBox1);
在 MaskedTextBox 的 KeyUp 事件中,获取当前文本框中的文本,并对需要高亮的文本进行处理,最后将处理后的文本赋值给 RichTextBox 的 Text 属性。
private void maskedTextBox1_KeyUp(object sender, KeyEventArgs e)
{
// 获取文本框中的文本
string text = maskedTextBox1.Text;
// 处理需要高亮的文本
text = HighlightText(text, "error");
// 将处理后的文本赋值给 RichTextBox
richTextBox1.Text = text;
}
下面是一个简单的实现高亮文本的方法,该方法接受两个参数:需要处理的文本和需要高亮的关键字。方法中使用了正则表达式来匹配需要高亮的文本,然后使用 HTML 标记来将匹配的文本高亮显示。
public static string HighlightText(string text, string keyword)
{
// 使用正则表达式匹配需要高亮的文本
var regex = new Regex(keyword, RegexOptions.IgnoreCase);
var matches = regex.Matches(text);
// 遍历匹配结果,使用 HTML 标记来将匹配的文本高亮显示
foreach (Match match in matches)
{
text = text.Replace(match.Value, $"<b>{match.Value}</b>");
}
return text;
}
using System;
using System.Text.RegularExpressions;
using System.Windows.Forms;
namespace WindowsFormsApp1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
// 添加 RichTextBox 控件
richTextBox1 = new RichTextBox();
this.Controls.Add(richTextBox1);
// 设置 MaskedTextBox 的 KeyUp 事件
maskedTextBox1.KeyUp += maskedTextBox1_KeyUp;
}
private void maskedTextBox1_KeyUp(object sender, KeyEventArgs e)
{
// 获取文本框中的文本
string text = maskedTextBox1.Text;
// 处理需要高亮的文本
text = HighlightText(text, "error");
// 将处理后的文本赋值给 RichTextBox
richTextBox1.Text = text;
}
public static string HighlightText(string text, string keyword)
{
// 使用正则表达式匹配需要高亮的文本
var regex = new Regex(keyword, RegexOptions.IgnoreCase);
var matches = regex.Matches(text);
// 遍历匹配结果,使用 HTML 标记来将匹配的文本高亮显示
foreach (Match match in matches)
{
text = text.Replace(match.Value, $"<b>{match.Value}</b>");
}
return text;
}
}
}