سلام
من از خود دیتا گرید مستقیم تا حالا ندیدم ولی یه روش بلدم و بسیار هم جالب هست تغریباً هر بلایی که می خواستم روی هر شیی که دوست داشتم در می آوردم.
بعضی وقت ها هست که برنامه نویس نیاز داره چند تا خاصیت به خاصیت های یک کنترول اضافه کنه برای این کار از وراثت استفاده می شه
همین الان من یکی رو با سرعت درست کردم و اون چیزی رو که تو خاستی براش گزاشتم
اگه می خوای این کار رو انجام بدی اول یه پروژه Windows Forms Appliction درست کن .بعد یک کلاس به پروژت اظافه کن( متن پیش فرضی رو که داخل کلاس بود رو پاک کن) و بعد کد زیر رو داخلش بطور کامل کپی کن
Public
Class RoshanDataGrid : Inherits DataGridView
Dim VScroll AsNew VScrollBar
Dim HScroll AsNew HScrollBar
Dim Show_v AsBoolean = True
Dim Show_H AsBoolean = True
PublicProperty ShowVscroll_Roshan() AsBoolean
Get
Return Show_v
EndGet
Set(ByVal value AsBoolean)
Show_v = value
If value Then
ShowV()
HScroll.Width = Me.Width - IIf(VScroll.Visible, VScroll.Width, 0)
VScroll.Show()
Else
VScroll.Hide()
EndIf
EndSet
EndProperty
PublicProperty ShowHscroll_Roshan() AsBoolean
Get
Return Show_H
EndGet
Set(ByVal value AsBoolean)
Show_H = value
If value Then
ShowV()
HScroll.Show()
Else
HScroll.Hide()
EndIf
EndSet
EndProperty
PrivateSub ShowV()
VScroll.Parent = Me
VScroll.Top = 0
VScroll.Enabled = False
VScroll.Maximum = 0
VScroll.Height = Me.Height
IfMe.RightToLeft = Windows.Forms.RightToLeft.Yes Then
VScroll.Left = 0
Else
VScroll.Left =
Me.Width - VScroll.Width
EndIf
EndSub
PrivateSub ShowH()
VScroll.Maximum = 1
HScroll.Parent = Me
HScroll.Enabled =
False
IfMe.RightToLeft = Windows.Forms.RightToLeft.Yes Then
HScroll.Left = VScroll.Width
Else
HScroll.Left = 0
EndIf
HScroll.Width =
Me.Width - IIf(VScroll.Visible, VScroll.Width, 0)
HScroll.Top = Me.Height - HScroll.Height
HScroll.RightToLeft = Me.RightToLeft
EndSub
PrivateSub RoshanDataGrid_Paint(ByVal sender AsObject, ByVal e As System.Windows.Forms.PaintEventArgs) HandlesMe.Paint
ShowV()
ShowH()
EndSub
PrivateSub RoshanDataGrid_Resize(ByVal sender AsObject, ByVal e As System.EventArgs) HandlesMe.Resize
ShowV()
ShowH()
EndSub
PrivateSub RoshanDataGrid_RightToLeftChanged(ByVal sender AsObject, ByVal e As System.EventArgs) HandlesMe.RightToLeftChanged
ShowV()
ShowH()
EndSub
PrivateSub RoshanDataGrid_Scroll(ByVal sender AsObject, ByVal e As System.Windows.Forms.ScrollEventArgs) HandlesMe.Scroll
If e.NewValue > 0 Then
ShowHscroll_Roshan =
False
ShowVscroll_Roshan =
False
Else
ShowHscroll_Roshan =
True
ShowVscroll_Roshan =
True
EndIf
EndSub
EndClass
امید وارم تا اینجاش خوب پیش رفته باشه...
حالا از کلاس بیاید بیرون و Build بگیرید
حالا یه سری به جعبه ابزارت بزن ببین یه کنترول جدید به نام RoshanDataGrid اضافه شده
اگه این شی رو روی فرم بیاری دوتا خاصیت بهش اضافه کردم به نام های ShowHscroll_Rosh وShowVscroll_Roshan که مقدار Boolean می گیره
راستی شاید راه بهتر دیگه وجود داشته باشه...
من همین رو بلد بودم به احتمال زیاد اساتید دیگه هم نظر هایی دارن بهتر یکم منتظر بمونی
به هر حال اگه یکم مبتدی بود ببخشید.....