کنترل RichTextBox
کنترل RichTextBox شبیه کنترل TextBox است با این تفاوت که این کنترل به شما اجازه میدهد که، قالب قسمتهای مختلف متن آنرا تغییر دهید. کنترل TextBox به طور کلی برای پذیرفتن اطلاعات ورودی از کاربر بکار میرود، در صورتیکه کنترل RichTextBox برای نمایش دادن متنهای قالب بندی شده و ذخیرهی آن در قالب Rich Text Format (RTF) به کار میرود.
در تصویر بالا شما تفاوت بین TextBox (بالا) و RichTextBox (پایین) را مشاهده میکنید. اگرچه شما میتوانید یک TextBox را قالب بندی کنید، ولی این قالب بندی، به کل متن آن اعمال میشود. کنترل 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 کردن با هم داشته باشید.
با سلام کنترل ریچ تکست باکس در ویندوز فرم دارای خاصیت تکست است اما در WPF خاصیتی به نام تکست وجود ندارد. می شود راهنمایی کنید.ممنون
سلام، تو WPF هم هست. عکس زیر رو ببینید
خاصیت Text
ببخشید استاد چرا در اینجا ارور میدهد
[richTextBox.UndoActionName = “Delete” ; [–WhatTeacher
سلام
دستورات را باید در کدام قسمت نوشت
هرجا تایپ میکنم ایراد میگره
به فرض وقتی تایپ می کنم
با خطا مواجه می شوم و در توضیح این پیغام را میدهد
سلام لطفا سوالاتون رو در سایت پرسش و پاسخ سایت مطرح کنید چون نظرات سایت مکان مناسبی برای پاسخ به پرسش ها نیست.
این اروری که داده به این معنی هست که این پراپرتی ، فقط خواندنی هست و نمیتونید مقداری رو بهش تخصیص بدید