PDA

View Full Version : آیا این امکان در DataGridView وجود داره!



davoodrm666_666
چهارشنبه 24 مهر 1387, 10:20 صبح
سلام من می خوام gridview رو به شکل زیر در بیارم آیا این امکان در DataGridView هست؟
(مثل خاصیت Colmearge در VsFlexGrid)

http://karner.us/jesus/nph-proy.pl/000010A/http/u4load.com/share/public/287/11.JPG

davoodrm666_666
سه شنبه 07 آبان 1387, 10:01 صبح
خودم جواب رو پیدا کردم
col merge در DataGridView وجود نداره اما می شه با برای این کار کد نوشت من یه نمونه کد می ذارم شاید به درد خیلی ها بخوره
یک کنترل datagridview به فرم اضافه کنید که پنج سطر و 5 ستون داسته باشه (دقیقا 5*5) و کد زیر رو در رویداد Paint کنترل datagridview بزارید
(اگر تغییر مشاهده نکردید. اندازه ها رو تغییر بدید)

Dim fnt As New Font("Arial", 10, FontStyle.Bold, GraphicsUnit.Point)
Dim rct1 As New Rectangle((DataGridView1.GetColumnDisplayRectangle (0, True).X), (DataGridView1.GetColumnDisplayRectangle(0, True).Y + DataGridView1.Columns(0).HeaderCell.ContentBounds. Height + 8), DataGridView1.GetColumnDisplayRectangle(0, True).Width - 1, (DataGridView1.GetRowDisplayRectangle((DataGridVie w1.Rows.Count - 1), True).Top - DataGridView1.GetRowDisplayRectangle((DataGridView 1.Rows.Count - 1), True).Height))
e.Graphics.FillRectangle(Brushes.White, rct1)
e.Graphics.DrawString("VERTICAL" & vbCrLf & "TEXT", fnt, Brushes.Black, rct1)
Dim rct As Rectangle = DataGridView1.GetRowDisplayRectangle(3, True)
rct.Height -= 1
Dim s As SizeF = e.Graphics.MeasureString("HORINZONTAL TEXT", DataGridView1.Font)
Dim lefts As Integer = (rct.Width / 2) - (s.Width / 2)
Dim tops As Integer = rct.Top + ((rct.Height / 2) - (s.Height / 2))
e.Graphics.FillRectangle(Brushes.White, rct)
e.Graphics.DrawString("HORINZONTAL TEXT", fnt, Brushes.Black, 2, tops)