「DataGridViewEx」の編集履歴(バックアップ)一覧はこちら
「DataGridViewEx」(2007/11/19 (月) 22:22:12) の最新版変更点
追加された行は緑色になります。
削除された行は赤色になります。
&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)
#openclose(show=クリックすると見出し一覧を表示します){
#contents()
}
*&aname(DataGridViewEx){DataGridViewEx}
DataGridViewの拡張クラス。まずは列の位置、幅、表示をユーザー設定として保存/読み出しするメソッドから。
読み出しを自動化したかったんですが、Newを拡張するとデザイナからの設定のほうが後なのでうまくいきません。
保存を自動化したかったんですが、DisposeだとすでにDataColumnが破棄されていてNothingを喰らいます(苦)。
LoadColumnStateはForm_Loadで、SaveColumnStateはForm_Closingで呼ぶのがよいでしょう。
誰かよいタイミングを知っていたら教えてください。
今後の予定
-列の表示状態を制御できるなんらかのインターフェースの供給
-CSVやTAB出力機能の供給
-各機能のコンテキストメニューへの供給
など。なんかネタを振ってくれる人がいれば拡張するかもしれません。
#highlight(vb.net){Option Strict On
Imports System.IO
Public Class DataGridViewEx
Inherits DataGridView
Public Sub SaveColumnState()
Try
If Directory.Exists(Application.UserAppDataPath) = False Then
Directory.CreateDirectory(Application.UserAppDataPath)
End If
Dim savepath As String = Path.Combine( _
Application.UserAppDataPath, _
"DataGridEx.ColumnState." & Me.Name)
Dim dt As New DataTable(Me.Name)
dt.Columns.Add("Name", Type.GetType("System.String"))
dt.Columns.Add("Width", Type.GetType("System.Int32"))
dt.Columns.Add("DisplayIndex", Type.GetType("System.Int32"))
dt.Columns.Add("Visible", Type.GetType("System.Boolean"))
For Each Column As DataGridViewColumn In Me.Columns
Dim row As DataRow = dt.NewRow
row("Name") = Column.Name
row("Width") = Column.Width
row("DisplayIndex") = Column.DisplayIndex
row("Visible") = Column.Visible
dt.Rows.Add(row)
Next
dt.WriteXml(savepath)
Catch ex As Exception
MessageBox.Show(ex.ToString)
End Try
End Sub
Public Sub LoadColumnState()
Try
Dim loadpath As String = Path.Combine( _
Application.UserAppDataPath, _
"DataGridEx.ColumnState." & Me.Name)
If File.Exists(loadpath) = False Then Exit Sub
Dim dt As New DataTable(Me.Name)
dt.Columns.Add("Name", Type.GetType("System.String"))
dt.Columns.Add("Width", Type.GetType("System.Int32"))
dt.Columns.Add("DisplayIndex", Type.GetType("System.Int32"))
dt.Columns.Add("Visible", Type.GetType("System.Boolean"))
dt.ReadXml(loadpath)
dt.DefaultView.Sort = "DisplayIndex"
For Each drv As DataRowView In dt.DefaultView
Dim column As DataGridViewColumn = Me.Columns(drv.Row("Name").ToString)
column.DisplayIndex = CType(drv.Row("DisplayIndex"), Int32)
column.Width = CType(drv.Row("Width"), Int32)
column.Visible = CType(drv.Row("Visible"), Boolean)
Next
Catch ex As Exception
MessageBox.Show(ex.ToString)
End Try
End Sub
End Class}
----
*comment
このページの記述で聞きたいこととか間違ってることとかありましたらコメントを。
#comment_num2
----