PDA

View Full Version : تغیر رنگ قسمتی از تکست باکس



mostafabestman
دوشنبه 06 دی 1389, 18:08 عصر
در ویژوال بیسیک 2010
چگونه مثلأ تمام متن مشکی باشد و یک کلمه خاص زرد؟
یک مثال ساده زدم.من به چیزی احتیاج دارم که مثلأ توسط تایمر هر 10 ثانیه یک متن خاص رو وارد تکست باکس بکنه
حالا مثلأ میخوام متن اولی که وارد میشه آبی دومی سبر سومی زرد چهارمی قرمز و .... و دوباره این حلقه تکرار شه.چی کار کنم.کمک کنین لطفأ

Alghoochi
دوشنبه 06 دی 1389, 18:44 عصر
در ویژوال بیسیک 2010
چگونه مثلأ تمام متن مشکی باشد و یک کلمه خاص زرد؟
یک مثال ساده زدم.من به چیزی احتیاج دارم که مثلأ توسط تایمر هر 10 ثانیه یک متن خاص رو وارد تکست باکس بکنه
حالا مثلأ میخوام متن اولی که وارد میشه آبی دومی سبر سومی زرد چهارمی قرمز و .... و دوباره این حلقه تکرار شه.چی کار کنم.کمک کنین لطفأ

رنگ متنو می تونی اینجوری عوض کنی.



Dim g As Graphics
Dim mybrush As New SolidBrush(Color.Black)
Dim myFont As New Font("Microsoft Sans Serif", 8.5, FontStyle.Regular, GraphicsUnit.Point, 5)
g.DrawString("Test", myFont, mybrush, 10, 30)
Label1.Text = g.DrawString("Test", myFont, mybrush, 10, 30)


تو این تاپیک توضیح داده شده بود. کد رو کپی کردم تا کارت راحت تر بشه.
http://www.vbforums.com/showthread.php?t=634673

mostafabestman
دوشنبه 06 دی 1389, 19:03 عصر
قسمتی که جلو لیبل هست خطا داره

g.DrawString("Test", myFont, mybrush, 10, 30
قسمت اولیش که نوشته خطایی نداره ولی قسمت دومی که مساوی لیبل هست خطا داره

Alghoochi
دوشنبه 06 دی 1389, 21:27 عصر
قسمتی که جلو لیبل هست خطا داره

g.DrawString("Test", myFont, mybrush, 10, 30
قسمت اولیش که نوشته خطایی نداره ولی قسمت دومی که مساوی لیبل هست خطا داره

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

mostafabestman
سه شنبه 07 دی 1389, 03:41 صبح
دستت درد نکنه فقط اگه ممکنه یکم زود تر عجله دارم

Alghoochi
سه شنبه 07 دی 1389, 09:24 صبح
مشکل از اینجاست که g.DrawString اصلا مقدار بازگشتی نداره. ولی چرا تو اون تاپیک اومده از این کد استفاده کرده نمی دونم.



Private Sub Label1_Paint(ByVal sender As System.Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Label1.Paint
With e.Graphics
Using fnt As New Font("Microsoft Sans Serif", 8.5!, FontStyle.Regular)
Using sf As New StringFormat(StringFormatFlags.NoWrap)
.DrawString("Test", fnt, Brushes.Black, 1.0!, 1.0!, sf)
End Using
End Using
End With
End Sub


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

Alghoochi
سه شنبه 07 دی 1389, 09:38 صبح
تو این پست یه روشی ارائه داده فقط به جای textbox از richtextbox استفاده کرده.

http://www.codeguru.com/forum/showpost.php?p=1214033&postcount=10

mostafabestman
سه شنبه 07 دی 1389, 10:00 صبح
من با زبان ویژوال بیسیک میخوام
اینکه سی شارپ هست

mostafabestman
سه شنبه 07 دی 1389, 19:18 عصر
این صفحه داره میوفته آخر.....
جواب بدین لطفأ
الان مدیران محترم پاک نکنن!

pedram_ns
چهارشنبه 08 دی 1389, 14:41 عصر
در این سایت می تونید کدها رو تبدیل کنید:

http://www.developerfusion.com/tools/convert/csharp-to-vb/


Private Sub ChangeTagColor(rtb As RichTextBox)
rtb.SelectionStart = 0
rtb.SelectionLength = rtb.Text.Length
Dim index As Integer = 0

For Each str As String In rtb.Text.Split(Nothing)
Dim objPlaceholderPattern As New Regex("<")
' Select the word
rtb.SelectionStart = index
rtb.SelectionLength = str.Length

' Trim off any ending punctuation in the selected text
While rtb.SelectionLength > 0 AndAlso [Char].IsPunctuation(rtb.Text(index + rtb.SelectionLength - 1))
rtb.SelectionLength -= 1
End While

If objPlaceholderPattern.IsMatch(str) Then
'MessageBox.Show(str + " is a tag");
rtb.SelectionColor = Color.Blue

rtb.SelectionProtected = True
End If
index = index + str.Length + 1
Next
End Sub