PDA

View Full Version : سوال: راهنمایی در مورد یک Editor SQL Server



Salar Ashgi
یک شنبه 29 آذر 1388, 10:08 صبح
سلام به همه دوستان عزیز ، در طراحی یک ویرایشگر متن پایگاه داده میخوام کلمات کلیدی

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

نیومد ، کد مورد نظر



if (richTextBox1.Text.Contains("select"))
{
richTextBox1.Select(richTextBox1.Text.IndexOf("select", 0), 6);
richTextBox1.SelectionColor = Color.Blue;
}


ممنون از راهنمایی شما

حامد مصافی
یک شنبه 29 آذر 1388, 11:02 صبح
private void button1_Click(object sender, EventArgs e)
{
ColorizeWord("select");
ColorizeWord("from");
ColorizeWord("where");
ColorizeWord("delete");
//and so much more ... ;-)
}
private void ColorizeWord(string w)
{
int lastIndex = -2;
do
{
int startIndex;
if (lastIndex == -2)
startIndex = 0;
else
startIndex = lastIndex + w.Length;

lastIndex = richTextBox1.Text.IndexOf(w, startIndex, StringComparison.OrdinalIgnoreCase);

if (lastIndex == -1) break;

richTextBox1.SelectionStart = lastIndex;
richTextBox1.SelectionLength = w.Length;
richTextBox1.SelectionColor = Color.Blue;

} while (lastIndex != -1);
}

Salar Ashgi
یک شنبه 29 آذر 1388, 12:00 عصر
ممنون از راهنمایی شما ، ولی من میخوام تو حالت Text changed این اتفاق بیافته ، چون کد من هم مثل

کد شما خارج از ایونت Text changed درست جواب میده و در داخل ایونت وقتی اولین کلمه رو پیدا کرد اونو

select میکنه و اگه دوباره بخوایم تایپ کنیم رو متن select شده تایپ خواهد شد .

Salar Ashgi
دوشنبه 30 آذر 1388, 11:54 صبح
دوستان نظر خاصی ندارند ؟

حامد مصافی
دوشنبه 30 آذر 1388, 12:06 عصر
كد را به اين شكل اصلاح كردم:


private void ColorizeWord(string w)
{
Regex r = new Regex("\\W" + w + "\\W", RegexOptions.IgnoreCase);
foreach (Match m in r.Matches(" " + richTextBox1.Text + " "))
{
richTextBox1.SelectionStart = m.Index;
richTextBox1.SelectionLength = w.Length;
richTextBox1.SelectionColor = Color.Blue;
}
}

private void richTextBox1_TextChanged(object sender, EventArgs e)
{
int selectionIndex = richTextBox1.SelectionStart;
int selectionLength = richTextBox1.SelectionLength;

richTextBox1.SelectionStart = 0;
richTextBox1.SelectionLength = richTextBox1.Text.Length;
richTextBox1.SelectionColor = Color.Black;

ColorizeWord("select");
ColorizeWord("from");
ColorizeWord("where");
ColorizeWord("delete");

richTextBox1.SelectionStart = selectionIndex;
richTextBox1.SelectionLength = selectionLength;
}