PDA

View Full Version : تغییر رنگ در RichTextBox



چهارشنبه 03 دی 1382, 19:55 عصر
اگر در RichTextBox بخواییم رنگ یک قسمت از متن رو تغییر بدیم، آیا راهی وجود داره که بدون Select کردن بشه این کار رو انجام داد ؟

Farhad.B.S
چهارشنبه 03 دی 1382, 20:11 عصر
مشکل select چیه ؟ در واقع هدفتون برای استفاده نکردن از کد زیر چیه ؟




RichTextBox1.Select(0, 10)
RichTextBox1.SelectionColor = Color.Blue

پنج شنبه 04 دی 1382, 11:30 صبح
مشکل این هست که نمی خوام متن بصورت Select شده در بیاد!!
البته می شه بعد از این دستور متن Select شده رو از حالت انتخاب در آورد ولی چون در برنامه ام این کار زیاد روی متن انجام می شه، متن یک مقدار حالت لرزش پیدا می کنه.

آیا راهی وجود داره ؟

sh
پنج شنبه 04 دی 1382, 13:24 عصر
سلام شیما خانوم

Private Sub ColorWord(ByVal textToFind As String, ByVal WordColor As String)
' Find and Bold all instances of a string within RichTextBox
Dim findCount As Integer = 0
With Me.rt
.SelectionStart = 0
.SelectionLength = 0
Dim findFromIndex As Integer = 0
While findCount <> -1
findCount = .Find(textToFind, findFromIndex, RichTextBoxFinds.MatchCase)
If findCount <> -1 Then
.SelectionFont = New Font("Verdana", 8, FontStyle.Bold)
If WordColor = "Blue" Then
.SelectionColor = System.Drawing.Color.Blue
Else
.SelectionColor = System.Drawing.Color.Black
End If
findFromIndex = findCount + textToFind.Length

End If
End While
End With
End Sub


با تشکر

پنج شنبه 04 دی 1382, 22:41 عصر
سلام آقای شهریار
از لطفتون ممنون .. ولی با دستور Find هم، کلمه بصورت Select شده در می یاد. شاید در متن هایی که شما امتحان می کنین چون این کار زیاد تکرار نمی شه، لرزش کلمات قابل دیدن نیست. ولی برنامه من یک کامپایلر هست و اگر کاربر سریع تایپ کنه، متن لرزش پیدا می کنه.
البته من با تابع SendMessage با پارامتر های زیر


SendMessage(RichTextBox1.Handle, 11, 0, 0)

در قبل از دستورات تغییر رنگ .. و سپس


SendMessage(RichTextBox1.Handle, 11, 1, 0)
RichTextBox1.Refresh()

تونستم این میزان لرزش رو تا حد زیادی کم کنم.

ضمنا کدی که گذاشتین در حلقه While یک شرط بررسی مقدار متغییر findFromIndex رو کم داره.
متشکرم