PDA

View Full Version : مبتدی: تغییر رنگ لغت مورد جستجو در datagridview



mhemati
یک شنبه 07 اردیبهشت 1393, 11:45 صبح
با سلام خدمت اساتید . یه datagridview داریم که با یک datatable پر می شه من می خوام یه جستجو داخل این datagridview انجام بدم که لغت مورد جستجو رنگش با بقیه جمله متفاوت باشه .:لبخندساده:

rasol_afkham
یک شنبه 07 اردیبهشت 1393, 12:08 عصر
dgvPass.Rows[e.RowIndex].Cells[e.ColumnIndex].Style.BackColor = PassColrCellBackColor;

dgvPass.Rows[e.RowIndex].Cells[e.ColumnIndex].Style.ForeColor = PassColrCellForeColor;
dgvPass.Rows[e.RowIndex].Cells[e.ColumnIndex].Style.Font = PassColrCellFont;
به ترتیب رنگ پس زمینه، قلم و نوع قلم را تغییر می دهند. البته با استفاده از خصوصیت Style می توانید قسمتهای دیگر را هم تغییر دهید. در ضمن هم سطر، هم ستون و هم سلول در این کنترل خصوصیتی به نام DefaultStyle دارند که می توانید ظاهر هر کدام را به صورت جداگانه تغییر دهید:چشمک:

mhemati
یک شنبه 07 اردیبهشت 1393, 13:00 عصر
dgvPass.Rows[e.RowIndex].Cells[e.ColumnIndex].Style.BackColor = PassColrCellBackColor;

dgvPass.Rows[e.RowIndex].Cells[e.ColumnIndex].Style.ForeColor = PassColrCellForeColor;
dgvPass.Rows[e.RowIndex].Cells[e.ColumnIndex].Style.Font = PassColrCellFont;
به ترتیب رنگ پس زمینه، قلم و نوع قلم را تغییر می دهند. البته با استفاده از خصوصیت Style می توانید قسمتهای دیگر را هم تغییر دهید. در ضمن هم سطر، هم ستون و هم سلول در این کنترل خصوصیتی به نام DefaultStyle دارند که می توانید ظاهر هر کدام را به صورت جداگانه تغییر دهید:چشمک:

با سپاس از توجهتون به این پست .
منظور من از تغییر رنگ لغت مورد جستجو این بود که مثلا : در یک سلول از datagridview این جمله رو داریم("من امروز آمدم")و لغت مورد جستجو (امروز )هست من می خوام فقط لغت (امروز)تغییر رنگ داشته باشه نه کل سلول .
بازم ممنون که وقت گذاشتید

mhemati
یک شنبه 07 اردیبهشت 1393, 13:04 عصر
از اساتید کسی راه حلی نداره ؟

mhemati
یک شنبه 07 اردیبهشت 1393, 13:10 عصر
البته من این کد رو پیدا کردم ببینید
if (e.ColumnIndex == 0 && e.RowIndex > -1)
{

if (e.Value != null)
{



string[] lines = e.Value.ToString().Split(',');



if (lines.Length > 1)
{

StringFormat sf = new StringFormat();

sf.Alignment = StringAlignment.Center;

sf.LineAlignment = StringAlignment.Center;



e.Paint(e.CellBounds, DataGridViewPaintParts.All & ~DataGridViewPaintParts.ContentForeground);

Rectangle r = e.CellBounds;



// measure the string

SizeF sizeF01 = e.Graphics.MeasureString(lines[0], e.CellStyle.Font);

Rectangle r01 = new Rectangle(e.CellBounds.Location, new Size((int)(sizeF01.Width + 1), e.CellBounds.Height));

// draw string

using (SolidBrush br = new SolidBrush(Color.Red))
{

e.Graphics.DrawString(lines[0], e.CellStyle.Font, br, r01, sf);

}



SizeF sizeF02 = e.Graphics.MeasureString(lines[1], e.CellStyle.Font);

Rectangle r02 = new Rectangle(new Point(e.CellBounds.Location.X + (int)(sizeF01.Width + 1), e.CellBounds.Y), new Size((int)(sizeF02.Width + 1), e.CellBounds.Height));

using (SolidBrush br = new SolidBrush(Color.Blue))
{

e.Graphics.DrawString(lines[1], e.CellStyle.Font, br, r02, sf);

}



e.Handled = true;

}

}

}


ولی مشکل من اینه که این کد بر ای تعداد معینی لغت هست و در حالی که ما نمی دونیم چه تعداد لغت و در کدام قسمت جمله لغت مورد نظرما قرار گرفته .

mhemati
یک شنبه 07 اردیبهشت 1393, 16:26 عصر
از اساتید کسی راه حلی نداره ؟

rasol_afkham
یک شنبه 07 اردیبهشت 1393, 17:17 عصر
شما در داتا گرید ویوی سی شارپ، درون هر ستون می توانید از 6 کنترل (دکمه، چک باکس، لیست طومارری، عکس، پیوند و کادر متن) استفاده نمایید. کادر متنی که شما می توانید استفاده کنید TextBox است که همانند نرم افزار NotePad ویندوز عمل می کنه پس نمی توان رنگ قسمتی از متن آن را تغییر داد. برای تغییر دادن رنگ قسمتی از متن نیاز به RichTextBox است.