PDA

View Full Version : سوال: رنگ کردن سطر های Rich Text Box



mahmood3d
یک شنبه 01 شهریور 1388, 18:36 عصر
سلام
من داخل برنامه ای که نوشتم یک قسمت برای گزارشگیری دارم که قبلا از List box استفاده کرده بودم ولی چون می خواستم هر آیتم از این رنگ خاصی رو بگیره توی سایت گشتم و دیدم که همه گفتند که باید از List View استفاده کنی.
وقتی از این ابزار استفاده کردم هنگام چاپ آیتم ها یک عمل رفرش هم توی لیست انجام میشه که هم یک جلوه بدی به برنامه می ده و هم سرعت برنامه رو پایین میاره.
توی یک نرم افزاری که باهاش کار می کردم (الان یادم نیست چه نرم افزاری بود) دیدم که گزارش هاشو داخل یک تکست قرار داده و با اینکه مقادیر خیلی سریع وارد نرم افزار میشد ولی تو سرعت نرم افزار تأثیری نداشت. فکر کنم توی Winrar هم از Rich Text box استفاده شده که هر فایلی که اکسترکت میشه توی اون وارد میشه.
حالا من می خوام توی نرم افزارم از Rich Text box استفاده کنم با این تفاوت که هر سطرش رنگ خاصی داشته باشه.
مثلا تو پردازشی که انجام میشه اگه اون تکه پردازش با موفقیت انجام شد با رنگ سبز گزارش رو چاپ کنه و هنگامی که خطا داد با رنگ قرمز گزارش خطا رو چاپ کنه.

samirdev
یک شنبه 01 شهریور 1388, 20:25 عصر
با این حال فکر کنم ListView گزینه بهتری است. که الیته کارش همین است که شما گفتید . ولی RichTextBox برای کار دیگری ساخته شده است.

فکر کنم اگه شما به روش زیر عمل کنید بهتر جواب بگیرید. دز ListView دو متد به نام های BeginUpdate و EndUpdate تعبیه شده که اگر اولی را قبل از تغییرات و دومی را بعد از تغییرات صدا بزنید . مشکل رفرش هم حل بشه.


با این حال من کد یک متد را برای شما قرار می دهم که با استفادده از آن می توان یک خط با رنگ دلخواه به RichTextBox اضافه کرد.


public void AddItemToRichTExtBox(string text, Color color)
{
int startIndex = richTextBox1.Text.Length;
int length = text.Length;
richTextBox1.Text += text + Environment.NewLine;
richTextBox1.Select(startIndex, length);
richTextBox1.SelectionColor = color;
richTextBox1.Select(richTextBox1.Text.Length, 0);
}

mahmood3d
یک شنبه 01 شهریور 1388, 22:56 عصر
توی List View اون دو تا متد رو امتحان کردم تأثیری نداشت