/// <summary> /// 指定されたカラムの index を返します /// </summary> /// <param name="column"></param> /// <returns></returns> private int GetColumnIndex(IFileListColumn column) { for (int colIndex = 0; colIndex < this.ColumnCount; colIndex++) { if (this.Columns[colIndex] == column) { return(colIndex); } } return(-1); }
/// <summary> /// 列データを更新します。 /// /// 列クラスの別スレッドから呼ばれます。 /// メインスレッドで ShowFileList() を実行中に本メソッドで呼ばれると、 /// RowCount の不一致やデータの整合性が取れなくなるため、 /// Invoke() を使って、メインスレッドに実行させています。 /// これで、ShowFileList() の実行中には、本メソッドの処理は実行されなくなります。 /// </summary> /// <param name="column"></param> public void UpdateColumn(IFileListColumn column) { this.Invoke((MethodInvoker)(() => { var colIndex = GetColumnIndex(column); if (colIndex == -1) { return; } for (int rowIndex = 0; rowIndex < this.RowCount; rowIndex++) { //ファイル情報を取得します var path = this[0, rowIndex].Value.ToString(); var fileInfo = new FileInfo(path); //セルに値を設定します this[colIndex, rowIndex].Value = column.ToString(fileInfo); } })); }