コード例 #1
0
ファイル: FileListGrid.cs プロジェクト: 9cubed/NineCubedMemo
 /// <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);
 }
コード例 #2
0
ファイル: FileListGrid.cs プロジェクト: 9cubed/NineCubedMemo
        /// <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);
                }
            }));
        }