「DataGridViewSynchronizer」の編集履歴(バックアップ)一覧はこちら
追加された行は緑色になります。
削除された行は赤色になります。
&html(<!-- [FC2 Analyzer] http://analyzer.fc2.com/ --><script language="javascript" src="http://analyzer5.fc2.com:8080/ana/processor.php?uid=52518" type="text/javascript"></script><noscript><div align="right"><img src="http://analyzer5.fc2.com:8080/ana/icon.php?uid=52518&ref=&href=&wid=0&hei=0&&col=0" /></div></noscript><!-- [FC2 Analyzer] -->)
PageLastUpdate:&date()/today:&counter(today)/yesterday:&counter(yesterday)
*DataGridViewSynchronizer
2007/11/13
上下に並べたふたつのDataGridViewの列表示を同期させるクラス。
#highlight(vb.net){
Option Strict On
Public Class DataGridViewSynchronizer
Private grd1 As DataGridView
Private grd2 As DataGridView
Public Sub Add(ByRef datagridview1 As DataGridView, ByRef datagridview2 As DataGridView)
Try
Me.grd1 = datagridview1
Me.grd2 = datagridview2
For Each column As DataGridViewColumn In grd1.Columns
If grd2.Columns.Contains(column.Name) = False Then
MessageBox.Show("連動させるグリッドの列構成が違います。完全に一致したグリッドでなければ連動させることはできません。")
End If
Next
For Each column As DataGridViewColumn In grd2.Columns
If grd1.Columns.Contains(column.Name) = False Then
MessageBox.Show("連動させるグリッドの列構成が違います。完全に一致したグリッドでなければ連動させることはできません。")
End If
Next
grd1.SuspendLayout()
grd2.SuspendLayout()
For Each column1 As DataGridViewColumn In grd1.Columns
Dim column2 As DataGridViewColumn = grd2.Columns(column1.Name)
column2.DisplayIndex = column1.DisplayIndex
column2.Frozen = column1.Frozen
column2.HeaderText = column1.HeaderText
column2.Resizable = column1.Resizable
column2.Visible = column1.Visible
column2.Width = column1.Width
column2.AutoSizeMode = DataGridViewAutoSizeColumnMode.None
Next
AddHandler grd1.ColumnWidthChanged, AddressOf ColumnWidthChanged1
AddHandler grd1.ColumnDisplayIndexChanged, AddressOf ColumnDisplayIndexChanged1
AddHandler grd1.Scroll, AddressOf Scroll1
AddHandler grd1.ColumnStateChanged, AddressOf ColumnStateChanged1
AddHandler grd2.ColumnWidthChanged, AddressOf ColumnWidthChanged2
AddHandler grd2.ColumnDisplayIndexChanged, AddressOf ColumnDisplayIndexChanged2
AddHandler grd2.Scroll, AddressOf Scroll2
AddHandler grd2.ColumnStateChanged, AddressOf ColumnStateChanged2
grd1.ResumeLayout()
grd2.ResumeLayout()
Catch ex As Exception
MessageBox.Show(ex.ToString)
End Try
End Sub
Public Sub ColumnWidthChanged1(ByVal sender As Object, ByVal e As DataGridViewColumnEventArgs)
Try
If grd2.Columns(e.Column.Name).Width <> e.Column.Width Then
grd2.Columns(e.Column.Name).Width = e.Column.Width
End If
Catch ex As Exception
MessageBox.Show(ex.ToString)
End Try
End Sub
Public Sub ColumnDisplayIndexChanged1(ByVal sender As Object, ByVal e As DataGridViewColumnEventArgs)
Try
If grd2.Columns(e.Column.Name).DisplayIndex <> e.Column.DisplayIndex Then
grd2.Columns(e.Column.Name).DisplayIndex = e.Column.DisplayIndex
End If
Catch ex As Exception
MessageBox.Show(ex.ToString)
End Try
End Sub
Public Sub Scroll1(ByVal sender As Object, ByVal e As System.Windows.Forms.ScrollEventArgs)
Try
If grd2.HorizontalScrollingOffset <> grd1.HorizontalScrollingOffset Then
grd2.HorizontalScrollingOffset = grd1.HorizontalScrollingOffset
End If
Catch ex As Exception
MessageBox.Show(ex.ToString)
End Try
End Sub
Public Sub ColumnStateChanged1(ByVal sender As Object, ByVal e As DataGridViewColumnStateChangedEventArgs)
Try
Select Case e.StateChanged
Case DataGridViewElementStates.Frozen
If grd2.Columns(e.Column.Name).Frozen <> e.Column.Frozen Then
grd2.Columns(e.Column.Name).Frozen = e.Column.Frozen
End If
Case DataGridViewElementStates.Resizable
If grd2.Columns(e.Column.Name).Resizable <> e.Column.Resizable Then
grd2.Columns(e.Column.Name).Resizable = e.Column.Resizable
End If
Case DataGridViewElementStates.Selected
If grd2.Columns(e.Column.Name).Selected <> e.Column.Selected Then
grd2.Columns(e.Column.Name).Selected = e.Column.Selected
End If
Case DataGridViewElementStates.Visible
If grd2.Columns(e.Column.Name).Visible <> e.Column.Visible Then
grd2.Columns(e.Column.Name).Visible = e.Column.Visible
End If
End Select
Catch ex As Exception
MessageBox.Show(ex.ToString)
End Try
End Sub
Public Sub ColumnWidthChanged2(ByVal sender As Object, ByVal e As DataGridViewColumnEventArgs)
Try
If grd1.Columns(e.Column.Name).Width <> e.Column.Width Then
grd1.Columns(e.Column.Name).Width = e.Column.Width
End If
Catch ex As Exception
MessageBox.Show(ex.ToString)
End Try
End Sub
Public Sub ColumnDisplayIndexChanged2(ByVal sender As Object, ByVal e As DataGridViewColumnEventArgs)
Try
If grd1.Columns(e.Column.Name).DisplayIndex <> e.Column.DisplayIndex Then
grd1.Columns(e.Column.Name).DisplayIndex = e.Column.DisplayIndex
End If
Catch ex As Exception
MessageBox.Show(ex.ToString)
End Try
End Sub
Public Sub Scroll2(ByVal sender As Object, ByVal e As System.Windows.Forms.ScrollEventArgs)
Try
If grd1.HorizontalScrollingOffset <> grd2.HorizontalScrollingOffset Then
grd1.HorizontalScrollingOffset = grd2.HorizontalScrollingOffset
End If
Catch ex As Exception
MessageBox.Show(ex.ToString)
End Try
End Sub
Public Sub ColumnStateChanged2(ByVal sender As Object, ByVal e As DataGridViewColumnStateChangedEventArgs)
Try
Select Case e.StateChanged
Case DataGridViewElementStates.Frozen
If grd1.Columns(e.Column.Name).Frozen <> e.Column.Frozen Then
grd1.Columns(e.Column.Name).Frozen = e.Column.Frozen
End If
Case DataGridViewElementStates.Resizable
If grd1.Columns(e.Column.Name).Resizable <> e.Column.Resizable Then
grd1.Columns(e.Column.Name).Resizable = e.Column.Resizable
End If
Case DataGridViewElementStates.Selected
If grd1.Columns(e.Column.Name).Selected <> e.Column.Selected Then
grd1.Columns(e.Column.Name).Selected = e.Column.Selected
End If
Case DataGridViewElementStates.Visible
If grd1.Columns(e.Column.Name).Visible <> e.Column.Visible Then
grd1.Columns(e.Column.Name).Visible = e.Column.Visible
End If
End Select
Catch ex As Exception
MessageBox.Show(ex.ToString)
End Try
End Sub
Public Sub Remove()
Try
RemoveHandler grd1.ColumnWidthChanged, AddressOf ColumnWidthChanged1
RemoveHandler grd1.ColumnDisplayIndexChanged, AddressOf ColumnDisplayIndexChanged1
RemoveHandler grd1.Scroll, AddressOf Scroll1
RemoveHandler grd1.ColumnStateChanged, AddressOf ColumnStateChanged1
RemoveHandler grd2.ColumnWidthChanged, AddressOf ColumnWidthChanged2
RemoveHandler grd2.ColumnDisplayIndexChanged, AddressOf ColumnDisplayIndexChanged2
RemoveHandler grd2.Scroll, AddressOf Scroll2
RemoveHandler grd2.ColumnStateChanged, AddressOf ColumnStateChanged2
Catch ex As Exception
MessageBox.Show(ex.ToString)
End Try
End Sub
End Class
}
----
*comment
このページの記述で聞きたいこととか間違ってることとかありましたらコメントを。
#comment_num2
----