- 題名: 単一行選択の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 動作にする方法はありますでしょうか?