PDA

View Full Version : سوال: تغییر رنگ radGridView



alale66
یک شنبه 14 مهر 1392, 11:37 صبح
با سلام

دوستان کسی میدونه چطور میتونم رنگ header RadGridView که آبی هست رو تغییر بدم؟

ممنون

alale66
یک شنبه 14 مهر 1392, 17:02 عصر
از دوستان کسی نیست بتونه رهنمایی کنه؟؟؟؟

alale66
دوشنبه 15 مهر 1392, 08:41 صبح
هیچ کس نمیدونهههههههه؟؟؟؟؟؟:افسر ه:

pedram.11
دوشنبه 15 مهر 1392, 09:06 صبح
ببخشید من اصلا نمیدونم header RadGridView چیه و از کجا اومده، این کنترل کجاست؟!

alale66
دوشنبه 15 مهر 1392, 09:13 صبح
ببخشید من اصلا نمیدونم header RadGridView چیه و از کجا اومده، این کنترل کجاست؟!


من از کامپوننت Telerik استفاده میکم که در اون radGridView مثل DataGridView هست.

Tiam121
دوشنبه 15 مهر 1392, 10:12 صبح
من ندیدم که بشه رنگ هدر رو تغییر داد اما رنگ هر سلول یا ستون یا سطر رو به راحتی میتونی تغییر بدی.اما مثال های خودشو هم نگاه کردم نمونه ای واسه کاری که شما میخوای ندیدم

alale66
دوشنبه 15 مهر 1392, 11:42 صبح
من ندیدم که بشه رنگ هدر رو تغییر داد اما رنگ هر سلول یا ستون یا سطر رو به راحتی میتونی تغییر بدی.اما مثال های خودشو هم نگاه کردم نمونه ای واسه کاری که شما میخوای ندیدم


ممنون از توجهتون
من از این طریق میتونم رنگ رو تغییر بدم



private void radGridView1_ViewRowFormatting(object sender, RowFormattingEventArgs e)
{

if (e.RowElement is GridTableHeaderRowElement)
{
e.RowElement.DrawBorder = true;
e.RowElement.DrawFill = true;
e.RowElement.GradientStyle = Telerik.WinControls.GradientStyles.Solid;
e.RowElement.BackColor = Color.Green;
e.RowElement.ForeColor = Color.Red;


}
}


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

pedram.11
دوشنبه 15 مهر 1392, 11:48 صبح
radGridView1.Invalidate() رو تست کردید؟

alale66
دوشنبه 15 مهر 1392, 11:55 صبح
radGridView1.Invalidate() رو تست کردید؟


همین الان تستش کردم اتفاق خاصی نیافتاد:افسرده:
راهی وجود نداره property هاش دوباره ست بشن؟

pedram.11
دوشنبه 15 مهر 1392, 11:58 صبح
والا Invalidate کارش همینه و دوباره ظاهرش ست میشه. نمیدونید متد radGridView1_ViewRowFormatting کی فراخوانی میشه؟

alale66
دوشنبه 15 مهر 1392, 12:06 عصر
والا Invalidate کارش همینه و دوباره ظاهرش ست میشه. نمیدونید متد radGridView1_ViewRowFormatting کی فراخوانی میشه؟


وقتی فرم Setting م load میشه.
نمیدونم برای فراخونیش چجوری یه EventArgs رو به RowFormattingEventArgs تبدیل کنم.اصلا ین روش درسته؟

pedram.11
دوشنبه 15 مهر 1392, 12:11 عصر
شما یه کاری کنید. روی اولین خط متد radGridView1_ViewRowFormatting یک Break point بذارید. در زمان اجرای برنامه وقتی برنامه اینجا متوقف شد، از پنجره ی Call Stack ببینید در مراحل قبلی چه متد هایی اجرا شدن و این متد از کجا فراخوانی شده

alale66
دوشنبه 15 مهر 1392, 12:47 عصر
شما یه کاری کنید. روی اولین خط متد radGridView1_ViewRowFormatting یک Break point بذارید. در زمان اجرای برنامه وقتی برنامه اینجا متوقف شد، از پنجره ی Call Stack ببینید در مراحل قبلی چه متد هایی اجرا شدن و این متد از کجا فراخوانی شده


از Application.Run(new Frm_Setting_Grid()); میره داخل constructor فرمم بعد بر میگرده Application.Run(new Frm_Setting_Grid()); و میره داخل event
خودم هر سری میرفت داخل event چک میکردم تماما قبلش Application.Run(new Frm_Setting_Grid()); هست

pedram.11
دوشنبه 15 مهر 1392, 12:52 عصر
این کمکی نکرد، من وقتی اینجور جاها گیر میافتم کامپوننت رو رفلکت میکنم و از سورس کدش به چیزی که میخوام میرسم اما متاسفانه نتونستم کامپوننت رو دانلود کنم

alale66
دوشنبه 15 مهر 1392, 13:14 عصر
این کمکی نکرد، من وقتی اینجور جاها گیر میافتم کامپوننت رو رفلکت میکنم و از سورس کدش به چیزی که میخوام میرسم اما متاسفانه نتونستم کامپوننت رو دانلود کنم

کار دیگه ای نمیشه کرد؟:ناراحت:

alale66
سه شنبه 16 مهر 1392, 11:27 صبح
???????????????????????????????????

kurdboy2175
سه شنبه 16 مهر 1392, 12:36 عصر
سلام
تو قسمت پراپرتیز خود dgv میتونی رنگشو تغییر بدی

alale66
سه شنبه 16 مهر 1392, 12:48 عصر
سلام
تو قسمت پراپرتیز خود dgv میتونی رنگشو تغییر بدی

این کارو انجام دادم رنگو تغییر میدم ولی زمان بیلد error دارم.اکه نمونه ش رو خودتون دارین میشه بذارین اینجا لطفا؟

pedram.11
سه شنبه 16 مهر 1392, 18:22 عصر
سلام یه نگاهی به کامپوننت های Telerik انداختم فعلا یه راهی پیدا کردم اما نمیگم بهترین راهه، اگه بازم روش کار کردم و کد بهتری به ذهنم رسید قرار میدم.
توی این حالت من یه لیست از نوع GridTableHeaderRowElement تعریف کردم و در رویداد radGridView1_ViewRowFormatting در صورت موجود نبودن اون المنت رو به لیست اضافه میکنه. بعد از این هروقتی که خواستید هرجایی میتونید به اون المنت ها برای تغییر رنگ و ... دسترسی داشته باشید.

لیست مجموعه المنت ها و رویداد دکمه برای تغییر رنگ به اینصورت میشه:
List<GridTableHeaderRowElement> res = new List<GridTableHeaderRowElement>();
private void radButton_BackColor_Click(object sender, EventArgs e)
{
// Show the Color dialog
if (radColorDialog1.ShowDialog() == DialogResult.OK)
{
_backColor = radColorDialog1.SelectedColor;
foreach (var re in res)
re.BackColor = _backColor;
}
}

و رویداد radGridView1_ViewRowFormatting:

void radGridView1_ViewRowFormatting(object sender, Telerik.WinControls.UI.RowFormattingEventArgs e)
{
if (e.RowElement is GridTableHeaderRowElement)
{
// Add new GridTableHeaderRowElement
GridTableHeaderRowElement re = e.RowElement as GridTableHeaderRowElement;
if (!res.Contains(re))
{
e.RowElement.DrawBorder = true;
e.RowElement.DrawFill = true;
e.RowElement.GradientStyle = Telerik.WinControls.GradientStyles.Linear;
res.Add(re);
}
//
}
}

برای ForeColor هم میتونید همینکارو کنید. توی رویداد radGridView1_ViewRowFormatting فقط المنت ها اضافه میشن و تغییر رنگ در رویداد کلیک دکمه هست.

alale66
سه شنبه 16 مهر 1392, 21:40 عصر
سلام یه نگاهی به کامپوننت های Telerik انداختم فعلا یه راهی پیدا کردم اما نمیگم بهترین راهه، اگه بازم روش کار کردم و کد بهتری به ذهنم رسید قرار میدم.
توی این حالت من یه لیست از نوع GridTableHeaderRowElement تعریف کردم و در رویداد radGridView1_ViewRowFormatting در صورت موجود نبودن اون المنت رو به لیست اضافه میکنه. بعد از این هروقتی که خواستید هرجایی میتونید به اون المنت ها برای تغییر رنگ و ... دسترسی داشته باشید.

لیست مجموعه المنت ها و رویداد دکمه برای تغییر رنگ به اینصورت میشه:
List<GridTableHeaderRowElement> res = new List<GridTableHeaderRowElement>();
private void radButton_BackColor_Click(object sender, EventArgs e)
{
// Show the Color dialog
if (radColorDialog1.ShowDialog() == DialogResult.OK)
{
_backColor = radColorDialog1.SelectedColor;
foreach (var re in res)
re.BackColor = _backColor;
}
}

و رویداد radGridView1_ViewRowFormatting:

void radGridView1_ViewRowFormatting(object sender, Telerik.WinControls.UI.RowFormattingEventArgs e)
{
if (e.RowElement is GridTableHeaderRowElement)
{
// Add new GridTableHeaderRowElement
GridTableHeaderRowElement re = e.RowElement as GridTableHeaderRowElement;
if (!res.Contains(re))
{
e.RowElement.DrawBorder = true;
e.RowElement.DrawFill = true;
e.RowElement.GradientStyle = Telerik.WinControls.GradientStyles.Linear;
res.Add(re);
}
//
}
}

برای ForeColor هم میتونید همینکارو کنید. توی رویداد radGridView1_ViewRowFormatting فقط المنت ها اضافه میشن و تغییر رنگ در رویداد کلیک دکمه هست.




واو خیلیییییییییییی ممنونم:تشویق: