- 題名: 単一行選択のDataGridについて
- 日時: 2007/02/13 16:00:05
- ID: 19068
- この記事の返信元:
- (なし)
- この記事への返信:
- [19083] Re[1]: 単一行選択のDataGridについて2007/02/15 3:55:55
- ツリーを表示
■No19099に返信(シャノンさんの記事) > ProcessCmdKey では true を返すのみとし、行選択処理は > 自分で行うのが正解のようです。 > GridVScrolled では、スクロールバーが無い場合に > うまくいかないようですので、別の方法を探ってみたいと思います。 このようにしました。 なお、以下で使っているCountプロパティは、 http://dobon.net/vb/dotnet/datagrid/rowscount.html を利用して実装したものです。 if((keyData & Keys.Shift)==Keys.Shift) { switch(keyCode) { case Keys.Up: this.CurrentRowIndex = Math.Max( 0, this.CurrentRowIndex - 1 ); break; case Keys.Down: this.CurrentRowIndex = Math.Min( this.Count - 1, this.CurrentRowIndex + 1 ); break; case Keys.PageUp: this.CurrentRowIndex = Math.Max( 0, this.CurrentRowIndex - this.VisibleRowCount ); break; case Keys.PageDown: this.CurrentRowIndex = Math.Min( this.Count - 1, this.CurrentRowIndex + this.VisibleRowCount ); break; default: return base.ProcessCmdKey(ref msg, keyData); } return true; }
分類:[.NET]
お世話になります。
仕事では未だに .NET 1.1 の DataGrid を使っております。
前任者から引きついだ既存のコードの中に、こちらで公開されている単一行選択DataGridそのまんまのコードがありました。
ところで、掲載されているコードですと、Shift + PageUp | PageDown での複数行選択ができてしまいます。
お時間のある時に改修をお願いできますでしょうか。
また、Shift + ↑ | ↓ を押した際、ProcessCmdKey で return true; としてしまっているため、何も動きがありません。
これを、Shift なしでキーを押したときと同様の挙動にしたく、return true; を
return base.ProcessCmdKey( ref msg, keyData ^ Keys.Shift );
に書き換えたところ、↑↓キーは期待通りの動きになったのですが、PageDown と PageUp ではやはり複数選択されてしまいました。
Shift なしの PageUp | PageDown 動作にする方法はありますでしょうか?