سلام، اینم یه آموزش از سایت 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 کردن با هم داشته باشید.