PDA

View Full Version : عبارت با قاعده در RichTextBox



Hossis
سه شنبه 07 بهمن 1393, 11:39 صبح
باسلام
من کار با عبارت با قاعده رو بلدم منتها نمی دونم چطور باید اون رو در کنترل RichTextBox اعمال کنم که موارد تطابق رو انتخاب و هایلایت کنه تا بتونم اونها رو رنگی کنم.
اگر راهنمایی کنید ممنون می شوم

Share & Learn
سه شنبه 07 بهمن 1393, 12:39 عصر
سلام
فکر کنم منظورتون همچین چیزیه:


foreach (Match match in regExp.Matches(richTextBox.Text))
{
richTextBox.Select(match.Index, match.Length);
richTextBox.SelectionBackColor = Color.Yellow;
}

Hossis
چهارشنبه 08 بهمن 1393, 01:48 صبح
سلام
فکر کنم منظورتون همچین چیزیه:


foreach (Match match in regExp.Matches(richTextBox.Text))
{
richTextBox.Select(match.Index, match.Length);
richTextBox.SelectionBackColor = Color.Yellow;
}

احسنت ای ول دست مریزاد
واقعا همون چیزی بود که من دنبالش بودم
با بالاترین سرعت عمل کرد.
هرچی بگم کم گفتم
با همین تکه ، من یک سینتکس هایلایتر برای اچ تی ام ال ساختم
اینم کدش

private void ToolStripButton4_Click(object sender, System.EventArgs e) {
// Dim tx As String = wcode.Document.Body.InnerText
// tx = Regex.Replace(tx, "(?ims-)<\w*></\w*>", "")
// WB.Document.Write(tx)
RTB.Visible = false;
RTB.SelectAll();
RTB.SelectionColor = Color.Black;
RTB.Select(0, 0);
string[,] patterns;
"(?i-mxs)<[/\\?]?.*?[\\s>]";
"blue";
"=.*?\"?[\\s>]";
"teal";
"\".+?\"";
"maroon";
"(?ims-){.*?}";
"gray";
"(?i-mxs)>.*?<";
"Black";
for (i = 0; (i
<= ((patterns.Length / 2)
- 1)); i++) {
string ptrn = patterns[i, 0];
string clr = patterns[i, 1];
foreach (Match Match in Regex.Matches(RTB.Text, ptrn)) {
RTB.Select(Match.Index, Match.Length);
RTB.SelectionColor = ColorTranslator.FromHtml(clr);
}
}
RTB.Visible = true;
}