→[[.NETプログラミング]]
#contents
*初期設定 [#m0e910c7]
-あるプロジェクトで開発を始めるときにIDEの設定で最初にやること
--メインメニューの「ツール」−「ツールボックス アイテムの追加と削除」選択
--ここでC1FlexGridを選ぶ。リストに出てなかったらC1.Win.C1FlexGrid.dllの参照追加が必要
*色やスタイルの変更 [#scc17b6c]
-デフォルトで左端のカラムが灰色になっているのを普通の色にしたい
--ColsプロパティのFixedがデフォルトで1になっているのを0にする
--ヘルプ上では ColumnCollection.Fixedプロパティの所が該当するらしい。
-タイトル行のスタイル変更
--スタイルエディタ→組み込みスタイルのFixed.Border.StyleをFlatからRaisedにする
--時々IDEのデザイナが勝手にFlatに戻してしまう模様(バグ?)。解決法は不明。コードで無理やりやっちゃうという手もあるが、少々面倒
--コードによる初期化例
C1FlexGrid g = <対象のグリッド>
g.BeginInit(); //これをやらないと例外がとびます
g.Styles = new CellStyleCollection(
@"Normal{Font:MS UI Gothic, 9pt;} "+
"Fixed{BackColor:Control;ForeColor:ControlText;Border:Raised,1,Black,Both;} "+
"Highlight{BackColor:Highlight;ForeColor:HighlightText;} "+
"Search{BackColor:Highlight;ForeColor:HighlightText;} "+
"Frozen{BackColor:Beige;} "+
"EmptyArea{BackColor:AppWorkspace;Border:Flat,1,ControlDarkDark,Both;} "+
"GrandTotal{BackColor:Black;ForeColor:White;} "+
"Subtotal0{BackColor:ControlDarkDark;ForeColor:White;} "+
"Subtotal1{BackColor:ControlDarkDark;ForeColor:White;} "+
"Subtotal2{BackColor:ControlDarkDark;ForeColor:White;} "+
"Subtotal3{BackColor:ControlDarkDark;ForeColor:White;} "+
"Subtotal4{BackColor:ControlDarkDark;ForeColor:White;} "+
"Subtotal5{BackColor:ControlDarkDark;ForeColor:White;} "
);
g.EndInit();
-選択を行単位にしてもフォーカスのあるセルが白くなるのを避けたい
--FocusRectプロパティをNoneにする(こっちが本来的なやりかた)
--またはスタイルエディタでStyleのFocusのBackColor/ForeColorとHighlightのを一緒にする
-フォーカス行/列の反転表示をしたくない(ただ表示だけしたい)
--HighlightプロパティをNeverにする
-行ごとやセルごとにフォントを変えたり背景色を変えたりしたい
--プロパティのスタイルエディタで新しいスタイルを作るか、コードでgrid.Styles.Add()して新しいスタイルを追加し、そのスタイル(CellStyle)を変えたい行のStyleプロパティにセットする。
--ある行の文字を灰色にする例
//gがグリッド
CellStyle cs1 = g.Styles.Add("Sumi");
cs1.ForeColor = Color.Gray;
g.Rows[r].Style = cs1;
--ちなみに特定のセルに対してCellStyleをセットしたい場合にはSetCellStyle()というメソッドを使う。
-グリッドの無い背景部分の色の設定を変えたい
--StylesのEmptyAreaのBackColorを変える
*データ表示の設定 [#u931f48f]
-タイトル行のキャプション設定
--列エディタ→列を選択→Captionを設定
-リストの初期行数
--Rows.Countに行数をセットする。
--ただし安易に0にするとタイトル行にセットしたキャプションも消えて入れなおしになるので注意
*動作の設定 [#gbf7cbc5]
-選択を行単位にする
--SelectionModeをRowにする
-グリッドをリードオンリーにするとき
--AllowEdit -> false
--Highlight -> Never
--FocusRect -> NONE
--AllowSorting は状況次第で決める
--''それでもフォーカスしたセルの色が変わるときはStyles.Focusに変な値をセットしてないかチェック!''
-指定行までスクロールさせたい
--grd.Select(<指定行>,0)でいいと思われ
*編集機能 [#z301e08f]
-特定のセルや行などにコンボボックスをセットしたいとき
--ある行に対してドロップダウンリストをセットする場合の例
ComboBox cb = new ComboBox();
cb.DropDownStyle =ComboBoxStyle.DropDownList;
cb.Items.Add("-");
cb.Items.Add("+-");
cb.Items.Add("+");
cb.Items.Add("++");
cb.Items.Add("+++");
cb.SelectedIndex = 0;
r.Editor = cb; // rがRow(別にColumnやCellに対してセットするのでも良い)
この処理をするタイミングは初期化のタイミングで行う。初期データを設定するときなど。動的に変化させたい場合などはBeforeEditイベントでやっても良いと思う(未確認)。
--入力値の整合性チェックは ValidateEvent イベントハンドラを作成し、その中でチェックする。
---このとき <grid>.Editor.Text プロパティにチェックすべき入力が入っている。グリッド自体にはこの時点では入ってない点に注意