Datagrid Scrollbar  
Author Message
ams_ashraf





PostPosted: Visual Basic General, Datagrid Scrollbar Top

Can some one help me please

In my program i need to turn off the enable of the datagrid

the problem that when I turn it on again it's scrollbar becomes inactive , so the user can't use it to move between the datagrid rows

I use VB 2003

thanks for your help



Visual Basic23  
 
 
Ayhan Yerli





PostPosted: Visual Basic General, Datagrid Scrollbar Top

are you sure that scrollbars property of the DataGrid is not none



 
 
spotty





PostPosted: Visual Basic General, Datagrid Scrollbar Top

Use the readonly property which would set the grid so you could enter or chnage anything but the scrollbars would still be active enabling you to scroll around and view the data.

 

 


 
 
ams_ashraf





PostPosted: Visual Basic General, Datagrid Scrollbar Top

Thanks for your reply,

but the problem is that I need to close the Datagrid so the user can'nt choose another row for some minutes to make changes in other data in textboxs

the readonly property stop editing but the user can still move between the rows

if the user change the row , it will change the data in textboxs


 
 
spotty





PostPosted: Visual Basic General, Datagrid Scrollbar Top

You can still use the readonly - but you have to code around it a little. In my example I have a button which I can disable further changes to be made and whilst it disallows changes to be made the selected value remains but it allows me to scroll around the grid and the values are readonly - when I reclick the button to reenable selection of rows then editing is re-enabled.

You just have to maintain the selected item you want to preserve and handle this.

Example

Public Class Form1
Dim blnNoChnage As Boolean = False
Dim selrow As Integer '//Currently Selected Row

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'//Populate the datagridview
Dim dt As New DataTable
dt.Columns.Add("1")
dt.Columns.Add("2")

dt.Rows.Add(1, 2)
dt.Rows.Add(2, 2)
dt.Rows.Add(3, 2)
dt.Rows.Add(4, 2)
Me.DataGridView1.DataSource = dt


Me.DataGridView1.MultiSelect = False
Me.DataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect
End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
blnNoChnage = Not blnNoChnage '//Toggles between allow or not allowing selected row to be changed
Me.DataGridView1.ReadOnly = blnNoChnage
End Sub

Private Sub DataGridView1_SelectionChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles DataGridView1.SelectionChanged
If Me.DataGridView1.SelectedRows.Count > 0 Then
'// If no chnage allowed then reset the selected row back to what it should be
'// else allow the chnage to take place and update the selrow variable
If blnNoChnage = True Then
CType(sender, DataGridView).Rows(selrow).Selected = True
Else
selrow = CType(sender, DataGridView).CurrentRow.Index
End If
Label1.Text = Me.DataGridView1.SelectedRows(0).Cells(0).Value

End If

End Sub
End Class