PDA

View Full Version : تغییر رنگ سر ستونهای دیتاگرید



Ghasem Dehghani
دوشنبه 17 اردیبهشت 1386, 11:32 صبح
با سلام
چطوری میشه به ColumnHeader در DataGridView رنگ خاصی را به آن داد چون به طور پیش فرض به صورت سفید نمایش داده میشه و هر کاری هم کردم نتونستم رنگش رو عوض کنم
حالا لطفا بگید چطوری میتونم رنگ زمینه عنوان سر ستونها رو تغییر بدم .
با تشکر .

Ghasem Dehghani
دوشنبه 17 اردیبهشت 1386, 12:30 عصر
لطفا یه راهنمایی کنید .

sepelloo
سه شنبه 18 اردیبهشت 1386, 02:19 صبح
ابتدا در محیط design حالت visualStyle دیتاگرید ویو ر اflase کن
یعد به قسمت تنظیم سر ستون ها می روی و رنگ مربوطه را تعیین می کنی
Adius

MH2538
سه شنبه 18 اردیبهشت 1386, 07:10 صبح
سلام
توی رخداد CellPainting مربوط به datagridview این کرد رو بنویسید


if (e.RowIndex == 0)
e.CellStyle.BackColor = Color.FromArgb(224,224,224);

Ghasem Dehghani
سه شنبه 18 اردیبهشت 1386, 08:31 صبح
باسلام
آقای sepelloo مبحث جالبی را عنوان کردید البته این خاصیتی را که گفتید فقط برای خود فرم تونستم پیدا کنم و و قتی اون رو false میکردم جواب میداد ولی با این کار تمام اسایل ویندوز از فرم حذف میشو و کلا فرم با تمام اشیای داخل آن به صورت ویندوز 98 در می اومدن .
حالا اگه زحمتی نیست یه راهنمایی عملی با کد بزارین ممنون میشم .
آقای MH2538 ضمن تشکر میخواستم بگم منظورم از سر ستون ها سطر اول نبود منظورم اون رنگ عنوانهای بالای سطر اول است همون جایی که ا بالای ستونها مثلا مینویسیم کد ، نام ، نام خانوادگی و ... در دیتاگرید ویو بود و میخواستم رنگ زمینه اونها رو عوض کنم که با روشی که عرض کردم یک کارهایی انجام شد ولی با این کار تمام اشیای فرم استایل خود را از دست میدن لطفا اگه روش دیگری مد نظرتون است که میتونه کمکم کنه لطفا راهنمایی کنید یا روش آقای sepelloo را کاملتر کنید .

با تشکر و سپاس از همگی دوستان .

MH2538
سه شنبه 18 اردیبهشت 1386, 09:42 صبح
سلام
برای اینکار کافیه بجای 0 ، 1- بگذاری


if (e.RowIndex == -1)
{
e.CellStyle.BackColor = Color.FromArgb(224, 224, 224);
e.CellStyle.ForeColor = Color.FromArgb(50, 110, 156);
}

Ghasem Dehghani
سه شنبه 18 اردیبهشت 1386, 11:10 صبح
بازهم سلام باز هم تشکر از آقای MH2538 .
این کدهای که فرمودید همشون جالب بودند و کارهم میکنن اما در حالتی که بیام وApplication.EnableVisualStyles را از کلاس Program.cs پاک کنم و یا اینکه در هنگام بالا اومدن فرم Application.VisualStyleState را دستی مقدار دهی کنم .
در این حالت کد های شما بدون هیچ مشکلی اجرا میشن و رنگ مورد نظر را اعمال میکنن و حتی از طریق خود C# هم میتوانم رنگ دلخواهم را به قسمتهای مختلف حتی سر تیتر ها بدهم ولی با دستکاری Application.EnableVisualStyles تمام فرم با اشیای داخل اون به شکل فرم های ویندوز 98 یعنی خیلی ساده در میاد .
تا اینجا به این نتیجه رسیدم که DataGridView استایل خود را از ویندوز به ارث میبرد (یه چیزی تو این مایه ها) حالا چه طور میشه یه کاری کرد که فقط استایل DataGridView را غیر فعال کرد .
اگر براتون مقدوره خودتون تو محیط دات نت یه چک بکنید و بعد نتیجه را به همراه کدتون در اینجا اعلام کنید .

با سپاس

sepelloo
چهارشنبه 19 اردیبهشت 1386, 01:49 صبح
من برای حالتی که هم تم xp داشته باشه و هم سر ستونها را تغییر رنگ بدی تجربه ای نداشتم
فکر می کنم یا باید رویدادهای دیتاگرید ویو را overload کنی یا اینکه یه کامپوننت خوب دیتاگرید ویو پیدا کنی
که فکر کنم دومی ساده تره
موفق باشید.

__H2__
چهارشنبه 19 اردیبهشت 1386, 09:42 صبح
سلام
راه حل اصلی همان اولی است ولی نامش EnableHeadersVisualStyles است که باید به False تنظیم شود و بعد میتوانید با ColumnHeadersDefaultCellStyle رنگ و مشخصات ستون ها را عوض کنید.

موفق باشید.