نمایش نتایج 1 تا 8 از 8

نام تاپیک: رنگی کردن بخشی از متن TextBox

  1. #1
    کاربر دائمی آواتار unique1984
    تاریخ عضویت
    دی 1384
    محل زندگی
    Newjef Land
    سن
    39
    پست
    221

    Question رنگی کردن بخشی از متن TextBox

    باسلام
    من می خوام زمانی که در تکست متنی رو تایپ میکنم به محض تایپ یک کلمه خاص که خودم واسش تعریف میکنم ، رنگ اون کلمه خاص تغییر کنه. مثلا اگر در تکست کلمه begin تایپ شد رنگ اون به آبی تغییر کنه و مابقی کلمات به همون رنگ مشکی باقی بمونند.
    برای تشخیص اون کلمه خاص مشکلی ندارم، مشکل اینه که چطور رنگیش کنم.
    با تشکر

  2. #2
    کاربر دائمی آواتار Saeed.Masoumi
    تاریخ عضویت
    فروردین 1388
    محل زندگی
    نامعلوم
    پست
    539

    نقل قول: رنگی کردن بخشی از متن TextBox

    سلام شما باید از RichTextBox استفاده کنی
    بعد توی ایونت TextChanged این کد رو بنویس:

    private string[] DB = {"Begin","End","for","if"};
    private string New = null;
    private int Index=0;
    private void richTextBox1_TextChanged(object sender, EventArgs e)
    {
    New = richTextBox1.Text;
    string[] array = New.Split(' ');
    for (int j = 0; j < array.Length; j++)
    {
    if (DB.Contains(array[j]))
    {
    Index = richTextBox1.Text.IndexOf(array[j]);
    richTextBox1.Select(Index, array[j].Length);
    richTextBox1.SelectionColor = Color.Red;
    richTextBox1.Select(richTextBox1.Text.Length, 0);
    richTextBox1.SelectionColor = Color.Black;
    array[j] = null;
    }
    }
    }
    این کد یک مشکل بزرگ داره اگه گفتی چیه(البته یک 3 4 تا مشکل کوچیک هم داره)؟

    راستی چجوری اون کلمه رو پیدا می کنی؟؟؟
    آخرین ویرایش به وسیله Saeed.Masoumi : شنبه 23 آبان 1388 در 23:50 عصر

  3. #3
    کاربر دائمی آواتار ali_md110
    تاریخ عضویت
    فروردین 1385
    محل زندگی
    شیراز
    پست
    1,181

    نقل قول: رنگی کردن بخشی از متن TextBox

    وقتی کلمه ای تایپ میکنید قبل از تایپ هم توی تکست باکس متنی نوشتید یا اینکه به یک منبعی مثل اکسس یا اسکیول ارتباط داره ؟

  4. #4
    کاربر دائمی آواتار unique1984
    تاریخ عضویت
    دی 1384
    محل زندگی
    Newjef Land
    سن
    39
    پست
    221

    نقل قول: رنگی کردن بخشی از متن TextBox

    ضمن تشکر از دوستان
    جناب معصومی ، فکر کنم بزرگترین مشکلش اینه : فقط اولین کلمه رو رنگی میکنه ، یعنی اگر چند بار for رو تایپ کنیم ، تنها اولین مورد رنگی میشه.
    در مورد نحوه تشخیص کلمه هم اجازه بدین با مثال توضیح بدم ; فرضا من میخوام کلمه if رو تشخیص بدم. به محض ورود هر کاراکتر در تکست ، اون کاراکتر بررسی میشه ، چنانچه حرف f بود حرف قبلش هم بررسی میشه و اگر حرف i بود ، حالا باید رنگی بشه. البته این برای تشخیص در textbox بود.
    وقتی کلمه ای تایپ میکنید قبل از تایپ هم توی تکست باکس متنی نوشتید یا اینکه به یک منبعی مثل اکسس یا اسکیول ارتباط داره ؟
    قبل و بعد از کلمه ممکنه متن دیگه ای هم باشه و در این مورد به بانک وصل نیست .
    آخرین ویرایش به وسیله unique1984 : یک شنبه 24 آبان 1388 در 17:06 عصر

  5. #5
    کاربر دائمی آواتار Saeed.Masoumi
    تاریخ عضویت
    فروردین 1388
    محل زندگی
    نامعلوم
    پست
    539

    نقل قول: رنگی کردن بخشی از متن TextBox

    سلام
    آفرین درسته
    راه حلشم مثه تشخیص خطا توسط کامپایلره (خواستی بیشتر برات توضیح میدم)
    حالا چی شد مشکل شمامگه فقط سر رنگی کردن نبود؟پس حل شد دیگه

  6. #6
    کاربر دائمی آواتار unique1984
    تاریخ عضویت
    دی 1384
    محل زندگی
    Newjef Land
    سن
    39
    پست
    221

    نقل قول: رنگی کردن بخشی از متن TextBox

    راستش هنوز حل نشده
    اگه بتونم همشونو رنگی کنم اون وقت حل میشه.

  7. #7
    کاربر دائمی آواتار Saeed.Masoumi
    تاریخ عضویت
    فروردین 1388
    محل زندگی
    نامعلوم
    پست
    539

    نقل قول: رنگی کردن بخشی از متن TextBox

    سلام
    دوست عزیز طبق فرمایش شما:
    برای تشخیص اون کلمه خاص مشکلی ندارم، مشکل اینه که چطور رنگیش کنم.
    اما:
    اگه بتونم همشونو رنگی کنم اون وقت حل میشه.
    پس مشکل شما دو تا چیزه
    1- پیدا کردن همه کلمات
    2- رنگی کردن
    مشکل رنگی کردن که حل شد
    اما برای پیدا کردن همه کلمات یک راه جالب (البته به تعداد انسان ها راه هست برای رسیدن به خدا) اینه که یک متغییر رشته ای تعریف کن هردفعه کل متن تکست باکس رو توش بریز هردفعه به جای اینکه
    Index = richTextBox1.Text.IndexOf(array[j]);
    روی تکست باکس سرچ کنی رو متغییر سرچ کنی بعد از اتمام کار بیای اون کلمه خاص توی متغییر رو بایک کلمه دیگه هم طول خودش(!!!؟؟؟؟ چرا؟) عوض کنی حالا چی میشه؟هیچی هردفعه که سرچ می کنی اون کلمه خاص رو پیدا میکنی و رنگیش میکنی اونو به اصطلاح مارک می کنی که دفعه بعد اصلا پیدا نشه
    حالا شباهتش رو می گم با تشخیص خطا در فازهای کامپایل توی فرآیند کامپایل میاد برای پیدا کردن همه خطاها از یه همچین روشی استفاده می کنه چون اگه از این راه استفاده نکنه وقتی به اولین خطا رسید عملیات متوقف می شود و خطاهای دیگه رو پیدا نمی کنه (و یا امکان داره خطایی که در بالا پیدا کرده مرتفع بشه)
    کدشو خودت بنویس
    ایشالا موفق باشی

  8. #8

    نقل قول: رنگی کردن بخشی از متن TextBox

    سلام
    یه راه بهتر
    شما می تونید توی ایونت richtextbox از یه حلقه for استفاده کنید و هر کلمه ای را که می خواهید جستجو کند و اون را به رنگ دلخواهتان نشون بده
    private void tb3_richtxb_TextChanged(object sender, EventArgs e)
    {

    for ( int i = 0; i < tb3_richtxb.Text.Length;i++ )
    {
    tb3_richtxb.Find("if", i, RichTextBoxFinds.WholeWord);
    tb3_richtxb.SelectionColor = Color.Red;
    tb3_richtxb.DeselectAll();
    tb3_richtxb.Find("else", i, RichTextBoxFinds.WholeWord);
    tb3_richtxb.SelectionColor = Color.Blue;
    tb3_richtxb.DeselectAll();
    tb3_richtxb.SelectionColor = Color.White;
    }

    }

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •