چطور میشه این کار رو کرد اما با یک شرط خاص
مثلا اگر Status یک بود آبی و اگر 2 قرمز و ...
Printable View
چطور میشه این کار رو کرد اما با یک شرط خاص
مثلا اگر Status یک بود آبی و اگر 2 قرمز و ...
اینجوریشو نمیدونم اما میشه 1 در میان از دو رنگ مختلف استفاده کرد
بوسیله Alternate ها.نقل قول:
نوشته شده توسط RezaJP
ممنون البته من خواستم خود ایشون هم یه تلاشی بکنن :oops:
من در مورد این Alternate جستجو کردم ولی بیشتر به برنامه های وب بیس رسیدم!!!
من تو وین فرم میخوام این کار رو بکنم میشه یکم بیشتر برام توضیح بدید؟
از هر دو نفر شما سپاسگذارم.
بالاخره تونستم حلش کنم.
چیزی که میخواستم رو ساختم ولی نه با Alternate ها
چون اصلا نمیدوستم اون چیه.
در هر حال از توجه شما سپاسگذارم :flower:
میتونم بپرسم چطوری؟ :mrgreen:
به سختی :mrgreen:نقل قول:
نوشته شده توسط RezaJP
من از کد زیر استفاده کردم.
خوشهال میشم اگر روش ساده تر و کار آمدتری هم هست بهم بگید.
private void GridStyle()
{
int numCols = ds.Tables[0].Columns.Count;
DataGridTableStyle tableStyle = new DataGridTableStyle();
tableStyle.MappingName = ds.Tables[0].TableName.ToString();
DataGridColoredTextBoxColumn aColumnTextColumn ;
delegateGetColorRowCol d = new delegateGetColorRowCol(MyGetColorRowCol);
for(int i = 0; i < numCols; ++i)
{
aColumnTextColumn = new DataGridColoredTextBoxColumn(d, i);
switch (i)
{
case 0:
aColumnTextColumn.HeaderText = "کد";
aColumnTextColumn.Width = 40;
aColumnTextColumn.MappingName = ds.Tables[0].Columns[i].ColumnName;
aColumnTextColumn.NullText = "";
break;
case 1:
aColumnTextColumn.HeaderText = "تاریخ";
aColumnTextColumn.Width = 60;
aColumnTextColumn.MappingName= ds.Tables[0].Columns[i].ColumnName;
aColumnTextColumn.NullText = "";
break;
case 2:
aColumnTextColumn.HeaderText = "خریدار";
aColumnTextColumn.Width = 110;
aColumnTextColumn.MappingName = ds.Tables[0].Columns[i].ColumnName;
aColumnTextColumn.NullText = "";
break;
case 3:
aColumnTextColumn.HeaderText = "وضعیت";
aColumnTextColumn.Width = 55;
aColumnTextColumn.MappingName = ds.Tables[0].Columns[i].ColumnName;
aColumnTextColumn.NullText = "";
break;
case 4:
aColumnTextColumn.HeaderText = "تاریخ آخرین تغییر";
aColumnTextColumn.Width = 60;
aColumnTextColumn.MappingName= ds.Tables[0].Columns[i].ColumnName;
aColumnTextColumn.NullText = "";
break;
case 5:
aColumnTextColumn.HeaderText = "شرح";
aColumnTextColumn.Width = 200;
aColumnTextColumn.MappingName= ds.Tables[0].Columns[i].ColumnName;
aColumnTextColumn.NullText = "";
break;
}
tableStyle.GridColumnStyles.Add(aColumnTextColumn) ;
}
grdMaster.TableStyles.Clear();
grdMaster.TableStyles.Add(tableStyle);
}
public Color MyGetColorRowCol(int row, int col)
{
Color c = Color.Black;
int i = 0;
System.Windows.Forms.DataGridCell selectedCell = grdMaster.CurrentCell;
object selectedItem=null;
string cellValue = "";
selectedItem = grdMaster[row,3];
cellValue = Convert.ToString(selectedItem);
if (cellValue.ToString() == "انتظار")
c = Color.Blue;
else if (cellValue.ToString() == "لغو شده")
c = Color.Red;
else if (cellValue.ToString() == "تایید شده")
c = Color.Black ;
return c;
}
public delegate Color delegateGetColorRowCol(int row, int col);
public class DataGridColoredTextBoxColumn : DataGridTextBoxColumn
{
private delegateGetColorRowCol _getColorRowCol;
private int _column;
public DataGridColoredTextBoxColumn(delegateGetColorRowCo l getcolorRowCol, int column)
{
_getColorRowCol = getcolorRowCol;
_column = column;
}
protected override void Paint(System.Drawing.Graphics g, System.Drawing.Rectangle bounds, System.Windows.Forms.CurrencyManager source, int rowNum, System.Drawing.Brush backBrush, System.Drawing.Brush foreBrush, bool alignToRight)
{
try
{
backBrush = new SolidBrush(Color.White);
foreBrush = new SolidBrush(_getColorRowCol(rowNum, this._column));
}
catch (Exception ex){ /* empty catch */ }
finally
{
base.Paint(g, bounds, source, rowNum, backBrush, foreBrush, alignToRight);
}
}
}
}
میشه یک راه ساده تر بیان کنید ؟!؟!
من از کد زیر نتونستم هیچ نتیجه ای بگیرم :ناراحت: