PDA

View Full Version : رنگي كردن يك كلمه؟



sabz12
یک شنبه 28 تیر 1394, 11:59 صبح
من با اين كد مي خواهم علامت}{ را رنگي كنم ولي وقتي رنگي ميشه ادامه كلمات هم رنگي ميشه در صورتي كه فقط مي خواهم اين علامتها رنگي بشه چه تغييري بدم. مرسي از توجه شما

private void richTextBoxCod_TextChanged(object sender, EventArgs e)
{
int shomare3 = CountStringOccurrences(rich1, "{"); // // 1شمردن پرانتز
int shomare4 = CountStringOccurrences(rich1, "}");// // شمردن پرانتز2
///.///......


if (shomare3 - shomare4 > 0)
{
this.ColorParantz("{", Color.Orange, 0);

}
else if (shomare3 - shomare4 < 0)
{


this.ColorParantz("}", Color.Red, 0);// // رنگي كردن
}
else
{
this.ColorParantz("}", Color.Black, 0);
this.ColorParantz("{", Color.Black, 0);


}
}

private void ColorParantz(string word, Color color, int startIndex)///متد {


if (this.richTextBoxCod.Text.Contains(word))
{
int index = -1;
int selectStart = this.richTextBoxCod.SelectionStart;


while ((index = this.richTextBoxCod.Text.IndexOf(word, (index + 1))) != -1)
{
// this.richTextBoxCod.Select(0,1);
this.richTextBoxCod.Select((index + startIndex), word.Length);
this.richTextBoxCod.SelectionColor = color;
this.richTextBoxCod.Select(selectStart, 0);
this.richTextBoxCod.SelectionColor = Color.Black;
}
}
}

Share & Learn
یک شنبه 28 تیر 1394, 13:06 عصر
سلام اگر نیاز نیست تعداد پرانتزهای باز و بسته با هم برابر باشند کد TextChanged رو اینجوری بنویسی کافیه:

private void richTextBox1_TextChanged(object sender, EventArgs e)
{
string rich1 = richTextBox1.Text;
int shomare1 = CountStringOccurrences(rich1, "("); // // 1شمردن پرانتز
int shomare2 = CountStringOccurrences(rich1, ")");// // شمردن پرانتز2

if (shomare1 > 0)
{
this.CheckKeyword("(", Color.Red, 0);
}
if (shomare2 > 0)
{
this.CheckKeyword(")", Color.Red, 0);
}
}



اما اگر لازمه بازای هر پرانتز باز یه پرانتز بسته وجود داشته باشه اینجوری بنویس:


private void richTextBox1_TextChanged(object sender, EventArgs e)
{
string rich1 = richTextBox1.Text;
int shomare1 = CountStringOccurrences(rich1, "("); // // 1شمردن پرانتز
int shomare2 = CountStringOccurrences(rich1, ")");// // شمردن پرانتز2


if (shomare1 > 0 && shomare1 == shomare2)
{
this.CheckKeyword("(", Color.Red, 0);
this.CheckKeyword(")", Color.Red, 0);
}
}

sabz12
یک شنبه 28 تیر 1394, 18:37 عصر
جالب وقتي پرانتز رنگی میشه بعد از زدن حروف از روی کی برد مشکی است و مشکلی نیست ولی من یک باتن دارم مثل ماشین حساب وقتی روش کلیک می کنم علامت جمع روی رچباکس می یاد همراه پرانتز رنگی میشه ولی وقتی از روی کی برد می زنم درست است چرا؟کد باتن هم این می خوام مشکی باشه؟!
richTextBoxCod.Text = richTextBoxCod.Text + " " + ((Button)sender).Text+ " ";

Share & Learn
یک شنبه 28 تیر 1394, 19:40 عصر
متوجه نشدم می خوای چکار کنی و مشکل چیه!

یه همچین چیزی مد نظرتونه؟
لینک (http://www.sharefile.ir/uploads/1437659657.rar)

sabz12
یک شنبه 28 تیر 1394, 20:59 عصر
از توجه شما بزرگواران خیلی ممنون
به این برنامه نگاه کنید
می خواهم وقتی + می زنم به هیچ وجه رنگی نشه و فقط کروشه ها تغییر رنگ پیدا کنند

sabz12
دوشنبه 29 تیر 1394, 09:36 صبح
چطور مي تونم بهش بگم تمام كاراكترها را بغيير از} و{ را بگير و رنگش مشكي كن؟!:عصبانی++:

samin_panahi
دوشنبه 29 تیر 1394, 10:47 صبح
همه مشکی هستن که!

sabz12
دوشنبه 29 تیر 1394, 11:25 صبح
داخل رچباکس رنگی هستند دیگه؟؟؟

محمد آشتیانی
سه شنبه 30 تیر 1394, 01:35 صبح
سلام
ابتدا این فضای نام رو به فرمتون اضافه کنید
using System.Text.RegularExpressions;

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

private void Colorize(RichTextBox sender, Color textColor, Color highlightColor)
{
//تعریف کاراکترها یا کلماتی که باید هایلایت شوند
List<string> reservedWords = new List<string>(new String[] {"{","}"});


int defaultSelection = sender.SelectionStart;


foreach (var item in reservedWords)
{
MatchCollection matchCollection = Regex.Matches(sender.Text, item.ToString());


foreach (Match matchItem in matchCollection)
{
sender.SelectionStart = matchItem.Index;
sender.SelectionLength = matchItem.Length;
sender.SelectionColor = highlightColor;
}


sender.SelectionStart = defaultSelection;
sender.SelectionLength = 0;
sender.SelectionColor = textColor;
}
}


نحوه فراخوانی و استفاده هم به اینصورت هست (برای مثال در رویداد TextChanged مربوط به richTextBox1)

private void richTextBox1_TextChanged(object sender, EventArgs e)
{
Colorize(richTextBox1,Color.Black, Color.Red);
}


* پارامتر اول ، نام کنترل - پارامتر دوم رنگ متن عادی و پارامتر سوم رنگ متن هایلایت شده


موفق باشید.

sabz12
سه شنبه 30 تیر 1394, 09:49 صبح
ولي نمي دونم چرا عشقي كار ميكنه بازم اين علامت + رنگي ميشه؟!!فايل و عكسش را مي زارم كجاي كار اشتباه اصلا اين علامت } تو سيشارپ به عنوان كاراكتر مگه نيست!!!!شايد چيز ديگري هست كه از قلم انداختم يا راه ديگه اي داره هر نظري داريد بگيد شايد راهي پيدا كنم مرسي