نوشته شده توسط
arastoahmadi
ممنون از پاسختون دوست گرامی 3 تا سوال دیگه :
1- حالا من اگه بخام به جای شماره موضوع ها یعنی اعداد 189 ، 871 و ... کنترل checkbox و یا هرکنترل دیگه ای درج کنم باید از چه دستوری برای اینکار استفاده کنم.
اگر مساله صرفا نمایش باشه که رسم می کنید، مثلا اون شماره سطر فقط رسم ئه، کنترلی نداره.
اما اگر قراره بجز نمایش کاری هم انجام بده، مثلا با کلیک تیک اش تغییر کنه، در انواع دلخواه تون ستون اضافه می کنید.
در DataGridView نوع DataGridViewTextBoxColumn پیشفرض ئه که TextBox ئه ولی می توانید ستون های دیگری مثل DataGridViewCheckBoxColumn رو اضافه کنید که یک CheckBox ئه. اگر خواستید با رسم پیشفرض انجام بشه، باید در رخداد DataGridView.CellPainting جلوی e.Handled = true رو برای اون ستون بگیرید، چون اگه e.Handled = true بشه دیگه رسم پیشفرض CheckBox رو انجام نمیده. مثلا اگر ستون اندیس 3 یک ChecknBox ئه :
private void dataGridView1_CellPainting(object sender, DataGridViewCellPaintingEventArgs e)
{
if ((e.RowIndex < -1) || (e.RowIndex >= dataGridView1.RowCount) || (e.ColumnIndex < 0) || (e.ColumnIndex >= dataGridView1.Columns.Count))
{
return;
}
if ((e.ColumnIndex == 3) && (e.RowIndex >= 0))
{
return;
}
e.Handled = true;
.
.
.
نوشته شده توسط
arastoahmadi
2- اگه بخام "پاسخ داده شد" رو سبز نشون بدم ، "بسته شد" رو قرمز و "منتظر پاسخ " رو زرد نشون بدم باید چکار کنم
رنگ بندی جالبی نمیشه اما به هر حال برای Brush ای که در DrawString بکار میره (textBrush) شرط میذارید، مثلا :
e.Graphics.FillRectangle((selected) ? Brushes.LightBlue : ((e.RowIndex % 2 == 0) ? Brushes.WhiteSmoke : Brushes.White), e.CellBounds);
Brush textBrush;
switch (e.ColumnIndex)
{
case 3:
switch (text)
{
case "بسته شده":
textBrush = Brushes.Red;
break;
case "پاسخ داده شد":
textBrush = Brushes.ForestGreen;
break;
case "منتظر پاسخ":
textBrush = Brushes.Yellow;
break;
default:
textBrush = Brushes.Black;
break;
}
break;
default:
textBrush = Brushes.Black;
break;
}
var format = new StringFormat(StringFormat.GenericDefault);
نوشته شده توسط
arastoahmadi
3- شماره بندی صفحه رو باید چکار کنم طوری که 1000 تا رکوردمو تو 10 صفحه به صورت خودکار صفحه بندی کنه
یک لیست برای نگهداری تمامی سطر ها داشته باشید، مثل private List<DataGridViewRow> _rows که موقع نمایش هر صفحه با خیال راحت محتویات قبلی DataGridView رو حذف کنه و فقط همون 10 سطر رو در DataGridView درج کنه.