PDA

View Full Version : مبتدی: تغییر فرمت نوع خط در richTextBox



mr.siahatgar
یک شنبه 22 دی 1398, 05:51 صبح
سلام
من میدونم که برای تغییر فرمت مثلا تغییر رنگ متن در richTextBox باید از دستور زیر استفاده کنم
richTextBox1.Select(0, 1);


richTextBox1.SelectionColor= Color.Blue;

حالا اگر من بخوام خط به خط بخونم و تغیرات خودم را بدم باید چکار کنم . یعنی بطور کلی نمیخوام سلکت متنم بر اساس شماره اندیکس کارکتر یاشه . میخوام بر اساس شماره اندیکس کارکتر در همون خط باشه
یعنی مثلا اگر من دو خط داشته باشم و در خط دوم بخوام سلکت کنم شماره اندیکس که مگیره ممکنه 12 باشه ولی اگر بخواهیم از اول همون خط فقط محاسبه کنیم شماره 3 بگیره من چچوری میتونم این شماره 3 را تغییر فرمت بدم مثلا حرف c در مثال پایین
qwertyuui
wdcft
که حرف سی در کل richTextBox اندیکس 12 میگیره ولی اگر فقط خط دوم را در نظر بگیرم اندیکس 3 میگیره
حالا سوال من این هست که اگر من اندیکس کل را نداشته باشم ولی شماره کارکتر در سطر دوم را دشته باشم چجوری رنگ اون عوض کنم

ASHKANLAEI
یک شنبه 22 دی 1398, 09:54 صبح
از این کد استفاده کنید:
public static int GetLineIndex(this TextBox textbox, int line)
{
var text = textbox.Text;
var thisLine = 0;
for (var i = 0; i < text.Length; i++)
{
if (thisLine == line)
return i;


if (text[i] == '\n')
++thisLine;
}


throw new ArgumentOutOfRangeException();
}
حالا تنها کاری که باید انجام بدین اینه که بیاین و این کد رو بنویسید:
GetLineIndex([نام تکست باکس], [شماره خط از اول]) + [ایندکس حرف در اون خط]

mr.siahatgar
یک شنبه 22 دی 1398, 11:29 صبح
از این کد استفاده کنید:
public static int GetLineIndex(this TextBox textbox, int line)
{
var text = textbox.Text;
var thisLine = 0;
for (var i = 0; i < text.Length; i++)
{
if (thisLine == line)
return i;


if (text[i] == '\n')
++thisLine;
}


throw new ArgumentOutOfRangeException();
}
حالا تنها کاری که باید انجام بدین اینه که بیاین و این کد رو بنویسید:
GetLineIndex([نام تکست باکس], [شماره خط از اول]) + [ایندکس حرف در اون خط]

سلام ممنون از شما
البته با تابع richTextBox1.GetFirstCharIndexFromLine توانستم اولین کارکتر ان خط را اندیکسش پیدا کنم و بعد بر اساس ان سلکت را انجام دادم

ASHKANLAEI
یک شنبه 22 دی 1398, 16:30 عصر
سلام ممنون از شما
البته با تابع richTextBox1.GetFirstCharIndexFromLine توانستم اولین کارکتر ان خط را اندیکسش پیدا کنم و بعد بر اساس ان سلکت را انجام دادم
این کد هم همون کار رو انجام میده.