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

نام تاپیک: تشخیص و رنگ کردن متن RichTextBox در سی شارپ

  1. #1

    Question تشخیص و رنگ کردن متن RichTextBox در سی شارپ

    سلام
    توی سی شارپ دیدید که اگر کلمه if رو وارد کنید یه رنگ می شه و اگر یه متن رو داخل دابل کتیشن قرار بدیم یه رنگ دیگه می شه! مثل نمونه زیر
    private String a
    می خواستم بینم آیا این امکان در RichTextBox وجود داره؟؟؟ اگر آره چطوری؟؟؟
    خیلی ممنون


  2. #2

    نقل قول: تشخیص و رنگی کردن متن RichTextBox در سی شارپ

    شما با انتخاب یک بخش از متن آن میتوانید به آن ناحیه رنگ بدید
    خصوصیات زیر بکارت میاد
    Selection start
    Selection end
    ابتدا و انتهای ناحیه از متن برای انتخاب کردن آن بخش و یا اینکه اگر کاربر متنی را انتخاب کند به شما محل شروع و انتهای آنرا میدهد
    Selection color به ناحیه امنتخاب شده رنگ میدهد و یا رنگ آن ناحیه را به شما میدهد
    پس از هر فاصله زدن کاربر کلمه تایپ شده را بگیر و بررسی کن اگر if باشد آنرا انتخاب کن و رنگ بهش بده !

  3. #3
    کاربر دائمی آواتار یونس ابراهیمی
    تاریخ عضویت
    آذر 1391
    محل زندگی
    کوهدشت
    سن
    38
    پست
    190

    نقل قول: تشخیص و رنگی کردن متن RichTextBox در سی شارپ

    سلام، اینم یه آموزش از سایت w3-farsi.com خدمت دوستان عزیز


    کنترل RichTextBox شبیه کنترل TextBox است با این تفاوت که این کنترل به شما اجازه می دهد که قالب قسمت های مختلف متن آنرا تغییر دهید. کنترل Text Box به طور کلی برای پذیرفتن اطلاعات ورودی از کاربر بکار می رود ، در صورتیکه کنترل RichTextBox برای نمایش دادن متن های قالب بندی شده و ذخیره ی آن در قالب Rich Text Format (RTF) به کار می رود.

    در تصویر بالا شما تفاوت بین TextBox (بالا) و RichTextBox (پایین) را مشاهده می کنید. اگرچه شما می توانید یک Text Box را قالب بندی کنید ولی این قالب بندی به کل متن آن اعمال می شود. کنترل RichTextBox به شما اجازه می دهد که فقط قسمتی از کل متن داخل کنترل را قالب بندی کنید. شما می توانید از کنترل RichTextBox مانند کنترل TextBox برای گرفتن اطلاعات ورودی از کاربر استفاده کنید.هر دوی این کنترلها از کلاس TextBoxBase برگرفته می شوند بنابراین، بیشتر خواص آنها مثل خاصیت Text مشترک هستند. در جدول زیر خواص کنترل RichTextBox را مشاهده می کنید.
    خاصیت توضیح
    AcceptsTab مشخص می کند زمانی که دکمه ی Tab فشرده شد Focus بر روی آن قرار گیرد یا خیر.
    CanRedo مشخص می کند که تمامی کارهایی که در داخل RichTextBox انجام شد می توانند دوباره اعمال شوند یا خیر.
    CanUndo مشخص می کند که کاربر می تواند عملیات انجام شده در داخل RichTextBox را Undo کند یا خیر.
    DetectUrls مشخص می کند که وقتی یک URL در RichTextBox تایپ شود ، به طور خودکار قالب بندی شود یا خیر.
    Lines اطلاعات مربوط به کنترل RichTextBox را مشخص می کند.چنانچه بر روی دکمه ی کنار این خاصیت کلیک کنید می توانید مقادیر آنرا را مشاهده و دستکاری کنید.
    Modified مشخص می کند که محتوای RichTextBox پس از آخرین تغییرات دستکاری شده است یا خیر.
    Multiline مشخص می کند که کنترل RichTextBox می تواند حالت چند خطی داشته باشد یا خیر.(مقدار این خاصیت به طور پیش فرض برابر با True است)
    ReadOnly مشخص می کند که کنترل RichTextBox فقط خواندنی است یا خیر.
    Rtf متن کنترل RichTextBox را به همراه کدهای فرمت RichText (RTF) را در خود جای می دهد.
    Scrollbars برای تعیین نوع Scroll بکار می رود.این خاصیت نیز مانند خاصیت ScrollBars کنترل Text Box است.
    SelectedText متن داخل RichTextBox را در بر می گیرد.
    SelectionBackColor رنگ پشت زمینه ی متن انتخاب شده را مشخص می کند.
    SelectionBullet مشخص می کند که حالت گلوله ای به متن انتخاب شده اعمال شود یا خیر.
    SelectionColor رنگ متن انتخاب شده را مشخص می کند.
    SelectionFont نوع قلم متن انتخاب شده را مشخص می کند.
    SelectionLength تعداد کاراکترهای متن انتخاب شده را مشخص می کند.
    SelectionRightIndent فاصله بین ضلع راست کنترل RichTextBox و ضلع راست متن انتخاب شده یا محل درج جاری را مشخص می کند.
    SelectionStart محل شروع قسمت انتخاب شده یا محل درج را مشخص می کند.
    ShowSelectionMargin مشخص می کند که حاشیه ی انتخاب نمایش داده شود یا خیر.
    Text متنی را درون کنترل RichTextBox قرار می دهد.
    WordWrap متن درون کنترل RichTextBox را دسته بندی می کند.

    در این قسمت با رویداد هایی آشنا می شوید که از آنها می توانید برای کنترل RichTextBox استفاده کنید.
    رویداد توضیح
    LinkClicked زمانی که بر روی یک لینک کلیک می شود این رویداد رخ می دهد.
    Protected زمانی رخ می دهد که کاربر بخواهد یک متن حفاظت شده را دستکاری کند.
    TextChanged زمانی رخ می دهد که متن داخل RichTextBox دستکاری شود.
    SelectionChanged زمانی رخ می دهد که متن انتخاب شده تغییر کند.

    تغییر دادن قالب متن انتخاب شده

    تعداد زیادی از خواص کنترل RichTextBox برای متن انتخاب شده استفاده می شوند.برای مثال ، خاصیت SelectedText متنی را که توسط کاربر انتخاب شده است را مشخص می کند. همچنین شما می توانید از یک متد برای انتخاب یک متن استفاده کنید.
    richTextBox1.Select(10, 11);

    مقدار اول، نقطه ی شروع انتخاب و مقدار دوم تعداد کاراکترهایی را که باید از نقطه ی شروع انتخاب شوند را مشخص می کند. وقتی ما یک متن را انتخاب می کنیم، می توانیم متن انتخاب شده را به وسیله ی تعداد زیادی از خواص که بر روی متن انتخاب شده کار می کنند قالب بندی کنیم.
    برای مثال،شما می توانید برای تغییر رنگ متن انتخاب شده از خاصیت SelectionColor استفاده کنید.همچنین می توانید برای تغییر رنگ پس زمینه ی آن از خاصیت SelectionBackColor استفاده کنید.
    richTextBox1.SelectionColor = Color.Red;

    richTextBox1.SelectionBackColor = Color.Yellow;

    شما با استفاده از متد DeselectAll می توانید متن انتخاب شده را با کلیک بر روی هر جایی از فرم از حالت انتخاب خارج کنید.
    richTextBox1.DeselectAll();

    نکته: وقتی که هیچ متنی انتخاب نشده ، تاثیر خواص Selection مثل SelectionColor ، از نقطه ی درج شروع می شود. نقطه ی درج ،محلی چشمک زن و به شکل حرف I است که مشخص می کند درج متن از آنجا شروع خواهد شد.هر کاراکتر جدیدی که شما تایپ می کنید قالب بندی جدید بر آنها اعمال می شود.

    اضافه کردن یک حاشیه به متن انتخاب شده

    حاشیه ی انتخاب، یک حاشیه ی کوچک است که در سمت چپ کنترل RichTextBox قرار می گیرد.(به شکل توجه کنید)

    حاشیه ی انتخاب (که با فلش مشخص شده است) برای انتخاب یک خط بکار می رود. برای مثال ، در تصویر بالا خط سوم توسط کلیک کردن بر روی حاشیه انتخاب کناری آن انتخاب شده است. ما می توانیم از خاصیت SelectionMargin برای نمایش دادن حاشیه ی انتخاب استفاده کنیم.

    اضافه کردن Scroll (نوار پیمایش)

    برای اضافه کردن یک نوار پیمایش ، ما از خاصیت ScrollBars که مقادیری از نوع شمارشی RichTextBoxScrollBars را قبول می کند استفاده می کنیم. این مقادیر شمارشی شامل مقادیری از جمله Horizontal (افقی) است.این مقدار زمانی که طول خط ما زیاد باشد و مقدار خاصیت WordWrap نیز False باشد به کار می رود. مقدار بعدی Vertical (عمودی) است،و زمانی بکار می رود که تعداد خطوط متن از ارتفاع RichTextBox بیشتر باشد. مقدار Both نیز در مواقع لزوم به صورت اتوماتیک Scroll های عمودی و افقی را اضافه می کند. وقتی مقدار خاصیت SelectionMargin برابر false باشد، شما لازم است که از مقادیر شمارشی دیگری مانند ForcedHorizontal، ForcedVertical و یا ForcedBoth استفاده نمایید.برای غیر فعال کردن نوار پیمایش به صورت کامل کافیست که مقدار خاصیت ScrollBars را برابر None قرار دهید.

    تغییر ترازبندی متن انتخاب شده

    ما می توانیم از خاصیت SelectionAlignment برای تغییر تراز بندی (Align) متن انتخاب شده استفاده کنیم. این خاصیت مقادیری از نوع شمارشی HorizontalAlignment دریافت می کند که شامل Left، Right و Center می باشد. مهم است که بدانید پاراگراف ها چگونه در داخل کنترل ساخته می شوند.به طور کلی ، وقتی شما اولین کاراکتر خود را تایپ می کنید ،اولین پاراگراف در RichTextBox ساخته می شود. برای ساختن پاراگراف بعدی ، شما باید دکمه ی Enter را بزنید.

    Redo و Undo

    شما می توانید از خواص CanUndo و CanRedo برای اینکه کاربر بتواند عملیات انجام شده را Undo و یا Redo کند استفاده کنید. Undo کردن یعنی شما تغییراتی را که در اجزای کنترل RichTextBox به وجود آورده اید را برگشت دهید ، در صورتیکه Redo عملیات Undo را خنثی می کند و تغییراتی را که شما قبلا در اجزاء RichTextBox به وجود آورده اید را بر می گرداند.
    خواص UndoActionName و RedoActionName برای محدود کردن عملیات Undo و Redo به کارهای مشخصی به کار می روند. این خواص عملیات های زیر را به صورت رشته ای قبول می کنند.
    عمل توضیح
    Typing عملیات تایپ
    Delete عملیات حذف
    DragDrop عملیات Drag & Drop
    Cut عملیات برش (Cut)
    Paste عملیات Paste
    برای مثال وقتی که شما کلمه ی “Delete” را به خاصیت UndoActionName نسبت می دهید.اینکار باعث می شود که کاربر فقط بتواند عملیات حذف کردن را برگشت (Undo) دهد.
    richTextBox1.UndoActionName = "Delete";
    به یک دلیل نامعلوم مایکروسافت برای این خواص نوع شمارشی ایجاد نکرده است بنابراین شما باید از یک رشته برای انجام این اعمال استفاده نمایید.

    شناسایی URL

    کنترل RichTextBox این قابلیت را داراست که بتواند URL هایی را که در آن تایپ و یا Paste می شوند را تشخیص دهد. خاصیت DetectUrls به کنترل اجازه می دهد که URL ها را تشخیص داده و یک لینک به آن صفحه ایجاد کند. مقدار True این خاصیت را فعال و مقدار False این خاصیت را غیر فعال می کند. در تصویر زیر، شما یک URL را مشاهده می کنید که نشان دهنده ی یک لینک است.و زمانی که شما نشانگر موس را بر روی آن ببرید آیکن موس به شکل یک دست تغییر پیدا می کند.

    کلیک کردن بر روی Link آنرا در داخل مرورگر شما باز می کند.

    اضافه کردن بالت ها

    شما می توانید در داخل RichTextBox گلوله هایی را به وجود آورید. شما می توانید از خاصیت SelectionBullet و قرار دادن مقدار True برای نشانه گذاری متن انتخاب شده استفاده کنید. خاصیت BulletIndent فاصله ی هر گلوله را با ابتدای متن مشخص می کند. برنامه ی زیر یک دکمه دارد که در ابتدای هر خط انتخاب شده یا پارگراف یا جایی که محل درج قرار گرفته است یک گلوله اضافه می کند.


    فعال و غیر غیر فعال کردن کلیدهای میانبر

    خاصیت ShortcutsEnabled کلیدهای میانبری را که برای Cut کردن و Paste کردن متن بکار می روند فعال یا غیر فعال می کند. وقتی که مقدار این خاصیت برابر با True باشد ، کلیدهای میانبر زیر توسط RichTextBox قبول می شوند.
    میانبر عملکرد
    Ctrl + Z بازگردانی
    Ctrl + E وسط چین کردن متن
    Ctrl + C کپی کردن متن
    Ctrl + Y برعکس Undo
    Ctrl + X بریدن قسمتی از متن
    Ctrl + Backspace تمامی کلماتی که در سمت چپ نشانگر موس قرار دارند را حذف می کند
    Ctrl + V Paste کردن
    Ctrl + Delete تمامی کلماتی را که در سمت راست نشانگر موس قرار دارند را حذف می کند.
    Ctrl + A همه ی متن را انتخاب می کند.
    Ctrl + L چپ چین کردن
    Ctrl + R راست چین کردن
    وقتی که مقدار این خاصیت را برابر با False قرار دهید تمامی این کلیدهای میانبر در داخل RichTextBox غیر فعال می شوند.

    حفاظت از متن

    شما قابلیت محافظت از قسمتی از متن را با استفاده از خاصیت SelectionProtected را دارا هستید.وقتی که مقدار این خاصیت برابر با True باشد ، قسمتی از متن را که انتخاب کرده اید محافظت می شود.متنی که محافظت شده باشد را نمی توان دستکاری کرد. وقتی که کاربر می خواهد یک متن حفاظت شده را دستکاری کند ، رویداد Protect اتفاق می افتد. شما می توانید بر روی این رویداد مانور دهید، برای مثال ، می توانید یک پیغام را به کاربر نشان دهید مبنی بر اینکه او در تلاش برای دستکاری یک متن حفاظت شده است.

    Rich Text Format (RTF)

    Rich Text Format فایلی است که اطلاعات قالب(فرمت) متن شما را در خود ذخیره می کند. یک TextBox نمی تواند قالب (فرمت) متن ها در در خود ذخیره کند و فقط می تواند حاوی متن های ساده باشد. RichTextBox حاوی خواص Text و RTF است که خاصیت Text آن متن ساده را در خود جای می دهد و خاصیت RTF آن، متن و کدهای RTF ی را که برای قالب بندی آن به کار رفته است را در خود جای می دهد. تصویر زیر یک متن قالب بندی شده را به همراه کدهای RTF آن نشان می دهد.

    کدی که متن موجود در شکل بالا را قالب بندی می کند به صورت زیر است :
    richTextBox1.Select(0, 6);
    richTextBox1.SelectionFont = new Font(richTextBox1.Font, FontStyle.Bold);

    richTextBox1.Select(14, 11);
    richTextBox1.SelectionColor = Color.Red;

    richTextBox1.Select(29, 3);
    richTextBox1.SelectionFont = new Font(richTextBox1.Font, FontStyle.Bold);
    richTextBox1.SelectionFont = new Font(richTextBox1.Font, FontStyle.Italic);

    و کدی که همین متن را به RTF تبدیل می کند به صورت زیر است :
    richTextBox1.Text = richTextBox1.Rtf;
    کدهای RTF به برنامه های دیگر (نظیر Word) اجازه می دهد که قالب ها را خوانده و به همان صورت متن قالب بندی شده را به شما نمایش دهند. SelectRTF متن انتخاب شده را به همراه کد RTF آن انتخاب می کند. این به شما اجازه می دهد که متن قالب بندی شده را به همراه قالب آن در هنگام Cut کردن و Paste کردن با هم داشته باشید.

  4. #4

    نقل قول: تشخیص و رنگی کردن متن RichTextBox در سی شارپ

    سلام
    سپاس از دوستانی که به این تاپیک پاسخ دادن.
    من می خوام در متن کل RichTextBox جستجو کنه و هر کلمه ای که مثلا if بود رو آبی کنه.

  5. #5

    نقل قول: تشخیص و رنگی کردن متن RichTextBox در سی شارپ

    سوال من پاسخ داده نشد...

  6. #6
    کاربر دائمی آواتار یونس ابراهیمی
    تاریخ عضویت
    آذر 1391
    محل زندگی
    کوهدشت
    سن
    38
    پست
    190

    نقل قول: تشخیص و رنگی کردن متن RichTextBox در سی شارپ


    private void richTextBox1_TextChanged(object sender, EventArgs e)
    {
    this.CheckKeyword("private", Color.Purple, 0);
    this.CheckKeyword("string", Color.Green, 0);
    }



    private void CheckKeyword(string word, Color color, int startIndex)
    {
    if (this.richTextBox1.Text.Contains(word))
    {
    int index = -1;
    int selectStart = this.richTextBox1.SelectionStart;

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

  7. #7

    نقل قول: تشخیص و رنگی کردن متن RichTextBox در سی شارپ

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

    private void richTextBox1_TextChanged(object sender, EventArgs e)
    {
    this.CheckKeyword("private", Color.Purple, 0);
    this.CheckKeyword("string", Color.Green, 0);
    }



    private void CheckKeyword(string word, Color color, int startIndex)
    {
    if (this.richTextBox1.Text.Contains(word))
    {
    int index = -1;
    int selectStart = this.richTextBox1.SelectionStart;

    while ((index = this.richTextBox1.Text.IndexOf(word, (index + 1))) != -1)
    {
    this.richTextBox1.Select((index + startIndex), word.Length);
    this.richTextBox1.SelectionColor = color;
    this.richTextBox1.Select(selectStart, 0);
    this.richTextBox1.SelectionColor = Color.Black;
    }
    }
    }
    اگر اسپم محسوب می شه خیلی ببخشید...
    از شما تشکر فراوان می کنم مشکلم حل شد

تاپیک های مشابه

  1. سوال: شبکه کردن یک برنامه در سی شارپ
    نوشته شده توسط fq12966 در بخش C#‎‎
    پاسخ: 9
    آخرین پست: سه شنبه 08 اسفند 1391, 08:53 صبح
  2. رنگ کردن متن سلول در گرید
    نوشته شده توسط Delphi&Kylix_2939 در بخش مباحث عمومی دلفی و پاسکال
    پاسخ: 0
    آخرین پست: یک شنبه 30 مهر 1391, 12:18 عصر
  3. import کردن یک dll در سی شارپ
    نوشته شده توسط khosro hoseini در بخش C#‎‎
    پاسخ: 6
    آخرین پست: یک شنبه 24 شهریور 1387, 16:21 عصر
  4. اضافه کردن رفرنس ها در سی شارپ
    نوشته شده توسط soroush68 در بخش C#‎‎
    پاسخ: 3
    آخرین پست: دوشنبه 14 مرداد 1387, 20:19 عصر
  5. طریقه رجیستر کردن اکتیو ایکس در سی شارپ
    نوشته شده توسط hhiliahh در بخش C#‎‎
    پاسخ: 3
    آخرین پست: یک شنبه 08 مهر 1386, 13:52 عصر

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

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