PDA

View Full Version : سوال: رنگی کردن قسمتی از متن



AliRezaBeytari
پنج شنبه 17 اسفند 1391, 10:05 صبح
سلام دوستان.
شاید در نگاه اول به عنوان فکر کنید که چه سوال مسخره و ساده ای رو پرسیدم ، ولی این طور نیست.

شما در قسمت کد نویسی در VS مثلا اگر عبارت dim رو تایپ کنید به صورت Dim در می آید ؛ یعنی هم حرف d بزرگ می شود و هم رنگ عبارت Dim به آبی تغییر می کند.

حالا اگر بخواهم این قابلیت رو در یه RichBox یا TextBox اعمال کنم ؛ باید چه کار کنم.

لطفا راهنمایی کنید.

.....:::: باتشکر ::::.....

SHD.NET
پنج شنبه 17 اسفند 1391, 10:55 صبح
سلام . کد زیر که گذاشتم یه نمونه سادس که میتونی با توجه به کاری که میخوای اینجام بدی تغییرش بدی:
RichTextBox1.SelectionColor = Color.Red
RichTextBox1.SelectedText = "Hello "
RichTextBox1.SelectionColor = Color.Green
RichTextBox1.SelectedText = "World"


**موفق باشید**

AliRezaBeytari
پنج شنبه 17 اسفند 1391, 15:09 عصر
sh.dehnavi جان ؛ خودم این رو بلد هستم.
لطفا جواب خود سوال رو بدید.

AliRezaBeytari
جمعه 18 اسفند 1391, 11:35 صبح
کسی نبود؟؟:گریه:

AliRezaBeytari
جمعه 18 اسفند 1391, 14:55 عصر
کسی نیست جواب مارو بده!!؟؟

مرتضی تقدمی
جمعه 18 اسفند 1391, 16:32 عصر
سلام
خب شما میتونی یک کاری کنی. آرایه ای از کلمات کلیدی مورد نظرت ایجاد کن. بعد با تایپ هر حرف در rtb مقادیر رو چک کن اگه وجود داشت عملیات مورد نظرت رو انجام بده.
موفق باشید

TheCaptain
پنج شنبه 14 خرداد 1394, 18:11 عصر
سلام
منم همین مشکلو دارم
اینطور که شما میگی نمیشه که مثلا در عبارت In the name of God مثلا میخوام God رو رنگشو عوض کنم این کاری که شما میگی همشو عوض میکنه.
اگه میشه کاملتر توضیح بده

En_MK
جمعه 15 خرداد 1394, 17:44 عصر
سلام
من این راه به ذهنم رسید اما تستش نکردم
همونطور که دوستمونم گفتن شما تمام کلمات مد نظرتون را در قالب یک فایل تکس کنار سورس برنامه ذخیره کنید مثلا اینجوری
God=White
بعد بعد از هربار space زدن توسط کاربر (یعنی تایپ یک کلمه) داخل فایل سرچ کنید که ایا کلمه مورد نظر هست یا خیر
اگر بود کل اون خط را بخونید و رنگ کلمه را برابر با string ی قرار بدید که بعد از = نوشته شده است (با substring این کارو میتونید انجام بدید)
اولین راهی بود که من به ذهنم رسید

Blueboard
یک شنبه 17 خرداد 1394, 09:51 صبح
خب کدهای بخش رنگ خیلی راحت هستند. فقط باید یک سری کد به صورت Keyword درست کنید و بعد با Select حله.
ولی بزرگ کردن حرف اول رو فعلا نمیدونم. روش یکم کار کردم اگه درست شد حتما قرار میدم.
این کدها برای RichTextBox هستند و تو TextBox جواب نمیدن.


کدهای VB.NET:

Imports System.Collections.Generic
Imports System.ComponentModel
Imports System.Data
Imports System.Drawing
Imports System.Linq
Imports System.Text
Imports System.Windows.Forms
Imports System.Text.RegularExpressions

Namespace WindowsFormsApplication1
Public Partial Class Form1
Inherits Form
Public keyWords As New Regex("abstract|as|base|bool|break|byte|case|catch|char|c hecked|class|const|continue|decimal|default|delega te|do|double|else|enum|event|explicit|extern|false |finally|fixed|float|for|" + "foreach|goto|if|implicit|in|int|interface|internal |is|lock|long|namespace|new|null|object|operator|o ut|override|params|private|protected|public|readon ly|ref|return|sbyte|sealed|short|sizeof|stackalloc |static|" + "string|struct|switch|this|throw|true|try|typeof|ui nt|ulong|unchecked|unsafe|ushort|using|virtual|vol atile|void|while|")
Public Sub New()
InitializeComponent()
End Sub

Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1_Tick
Dim selPos As Integer = richTextBox1.SelectionStart
For Each keyWordMatch As Match In keyWords.Matches(richTextBox1.Text)

richTextBox1.[Select](keyWordMatch.Index, keyWordMatch.Length)
richTextBox1.SelectionColor = Color.Blue
richTextBox1.SelectionStart = selPos
richTextBox1.SelectionColor = Color.Black
Next
End Sub
End Class
End Namespace




کدهای #C:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Text.RegularExpressions;

namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Regex keyWords = new Regex("abstract|as|base|bool|break|byte|case|catch|char|c hecked|class|const|continue|decimal|default|delega te|do|double|else|enum|event|explicit|extern|false |finally|fixed|float|for|" +
"foreach|goto|if|implicit|in|int|interface|internal |is|lock|long|namespace|new|null|object|operator|o ut|override|params|private|protected|public|readon ly|ref|return|sbyte|sealed|short|sizeof|stackalloc |static|" +
"string|struct|switch|this|throw|true|try|typeof|ui nt|ulong|unchecked|unsafe|ushort|using|virtual|vol atile|void|while|");
public Form1()
{
InitializeComponent();
}

private void timer1_Tick(object sender, EventArgs e)
{
int selPos = richTextBox1.SelectionStart;
foreach (Match keyWordMatch in keyWords.Matches(richTextBox1.Text))
{

richTextBox1.Select(keyWordMatch.Index, keyWordMatch.Length);
richTextBox1.SelectionColor = Color.Blue;
richTextBox1.SelectionStart = selPos;
richTextBox1.SelectionColor = Color.Black;
}
}
}
}




لینک سایت مرجع (http://www.dreamincode.net/forums/topic/57072-syntax-highlight-in-c%23/#/)


تشکر یادتون نره :چشمک: