- 題名: DataGridで選択されたセルが新規入力行かどうか
- 日時: 2005/07/01 13:04:07
- ID: 11578
- この記事の返信元:
- (なし)
- この記事への返信:
- [11579] Re[1]: DataGridで選択されたセルが新規入力行かどうか2005/07/01 13:13:12
- ツリーを表示
(フォーカスが行くと*マークはなくなるはずですが、まぁ曲解して、) 「新しい行に入力後、まだその行から他の行への移動等、確定動作をしていない状態であるか どうかを調べたい」ということであれば、そのDataGridのソースに指定しているDataTableで カレントになっている行の、行状態を調べればすぐに分かります。 なお、DataGridのインデックスは直接DataTableの行インデックスと対応づいていませんので、 カレントになっている行を知るには、CurrencyManagerを使用する必要があります。 また、行からフォーカスが外れると「鉛筆マーク...」がなくなり、キャンセルか追加確定 どちらかの状態になってしまうので、Grid内コントロール(DataGridTextBoxColumn等の列指定 のクラスが持つ内部コントロール)に付けたイベント等で扱う必要があります。 (調べようとして、グリッドの外にあるボタン等を押した時点で、行の操作は追加確定もしくは キャンセル(何も打たずに抜けた場合)になります。) 参考までに If e.KeyCode = Keys.F1 Then Dim cm As CurrencyManager cm = CType(Me.BindingContext(DataGrid1.DataSource), CurrencyManager) Label1.Text=cm.Position.ToString Dim rv As DataRowView = cm.Current Dim r As DataRow = rv.Row Label2.Text=r.RowState.ToString End If 行の状態に関しては、 マニュアルで"DataRowState 列挙体"を見てください。 どれが、作成後でかつ、まだ追加もされていない宙ぶらりんな状態なのか、すぐ分かると思います。 CurrencyManagerは回りくどいと思われるかもしれませんが、データとコントロールを うまくバインドするための.NET上の実装だと思ってください。 必要な知識: CurrencyManager DataGridTableStyle DataGridTextBoxColumn RowState マニュアル当たってくださいね。
分類:[.NET]
DataGridで選択されたセルが新規入力行(*マーク)かどうか
判断することは可能でしょうか?
ヘルプやgooなど探してみたのですが・・・見つかりません。
御存知の方 教えて下さい!