作成日: 2022/09/07 最終更新日: 2022/09/07
文書種別
使用方法
詳細
AllowDraggingプロパティを「Columns」または「Both」に設定してマウスドラッグにより列を移動し、これらの列配置を保存して、後で列の順序を復元するため、ColumnCollectionクラスのBuildStringおよびParseStringメソッドを使用できます。
BuildStringメソッドは、列コレクションの 完全な説明を含む文字列をビルドするための情報を取得します。ParseStringメソッドは、列コレクションの説明を含む文字列を解析し、グリッドに適用します。
以下に、BuildStringメソッドで取得した文字列を、フォームを閉じる時にテキストファイルとして保存し、後ほどフォームを開く際に復元するサンプルを記載します。

(メモ)
C1FlexGridのWriteXMLメソッド・ReadXMLメソッドを用いても、同様に列情報を保存・復元することができます。ただしこれらのメソッドは、列配置の他に、セルに格納されたデータ、行と列のプロパティ、スタイル、画像など、すべての情報を XMLドキュメントにシリアライズします。
◎サンプルコード(VB)
BuildStringメソッドは、列コレクションの 完全な説明を含む文字列をビルドするための情報を取得します。ParseStringメソッドは、列コレクションの説明を含む文字列を解析し、グリッドに適用します。
以下に、BuildStringメソッドで取得した文字列を、フォームを閉じる時にテキストファイルとして保存し、後ほどフォームを開く際に復元するサンプルを記載します。

(メモ)
C1FlexGridのWriteXMLメソッド・ReadXMLメソッドを用いても、同様に列情報を保存・復元することができます。ただしこれらのメソッドは、列配置の他に、セルに格納されたデータ、行と列のプロパティ、スタイル、画像など、すべての情報を XMLドキュメントにシリアライズします。
◎サンプルコード(VB)
Public Class Form1
Dim filePath As String = "..\..\testBS.txt"
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
' DataSourceの設定
C1FlexGrid1.DataSource = GetDataTable()
' テキストファイルから列情報を読み込む
If System.IO.File.Exists(filePath) Then
Dim sr As System.IO.StreamReader = New System.IO.StreamReader(filePath)
C1FlexGrid1.Cols.ParseString(C1FlexGrid1, sr.ReadToEnd())
sr.Close()
End If
End Sub
Private Sub Form1_FormClosing(sender As Object, e As FormClosingEventArgs) Handles MyBase.FormClosing
' フォームを閉じるときに、列情報をテキストファイルに保存
Dim sw As System.IO.StreamWriter = Nothing
Dim utf_8 As System.Text.Encoding = System.Text.Encoding.UTF8
sw = New System.IO.StreamWriter(filePath, True, utf_8)
Dim txtBS As String = C1FlexGrid1.Cols.BuildString(True)
sw.Write(txtBS)
' オブジェクトの開放
If sw IsNot Nothing Then
sw.Close()
sw.Dispose()
sw = Nothing
End If
End Sub
Private Function GetDataTable() As Object
Dim dt As DataTable = New DataTable("TEST")
dt.Columns.Add("Column A", GetType(Integer))
dt.Columns.Add("Column B", GetType(String))
dt.Columns.Add("Column C", GetType(String))
Dim index As Integer
For index = 0 To 9
dt.Rows.Add(index, $"B {index}", $"C {index}")
Next
Return dt
End Function
End Class
◎サンプルコード(C#)
namespace prj_C1FlexGrid
{
public partial class Form1 : Form
{
string filePath = @"..\..\testBS.txt";
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
// DataSourceの設定
c1FlexGrid1.DataSource = GetDataTable();
// テキストファイルから列情報を読み込む
if (System.IO.File.Exists(filePath))
{
System.IO.StreamReader sr = new System.IO.StreamReader(filePath);
c1FlexGrid1.Cols.ParseString(c1FlexGrid1, sr.ReadToEnd());
sr.Close();
}
}
private static DataTable GetDataTable()
{
DataTable dt = new DataTable("TEST");
dt.Columns.Add("Column A", typeof(int));
dt.Columns.Add("Column B", typeof(string));
dt.Columns.Add("Column C", typeof(string));
for (int index = 0; index <= 9; index++)
{
dt.Rows.Add(index, $"B {index}", $"C {index}");
}
return dt;
}
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
// フォームを閉じるときに、列情報をテキストファイルに保存
System.IO.StreamWriter sw = null;
System.Text.Encoding utf_8 = System.Text.Encoding.UTF8;
sw = new System.IO.StreamWriter(filePath, true, utf_8);
string txtBS = c1FlexGrid1.Cols.BuildString(true);
sw.Write(txtBS);
// オブジェクトの開放
if (sw != null)
{
sw.Close();
sw.Dispose();
sw = null;
}
}
}
}