|
■No82670 (山丸 さん) に返信 > EXCELで、あるセル上で左クリックしてそのままマウスを移動した場合に ドラッグ操作の事だとしたら、マウス操作以外でも [Shift]+[矢印キー] でも同様の表示になりますね。
> 選択された範囲のセルがグレーになりますが、 黒のセルだと黒いままなので、グレーと言うか、暗くなる動作かも。
> これと同じようなことをDataGridViewでやりたいと思ってます。 > 参考になりそうなことがございましたらすみませんが、ご教示お願いします。
とりあえず、背景色を動的に変更してみました。
public partial class Form1 : Form { DataGridView dgv; public Form1() { InitializeComponent(); dgv = new DataGridView(); dgv.Dock = DockStyle.Fill; dgv.RowCount = 100; dgv.ColumnCount = 5; dgv.MultiSelect = true; Controls.Add(dgv); dgv.CellPainting += (sender, e) => { var p = dgv.CurrentCellAddress; var q = new Point(e.ColumnIndex, e.RowIndex); var cs = e.CellStyle; if ( p!= q && e.State.HasFlag(DataGridViewElementStates.Selected)) { cs.SelectionBackColor = Color.DarkGray; cs.SelectionForeColor = Color.Black; } }; } }
課題点
(1) DarkGray という固定色ではなく、現在の背景色に応じた「暗い色」を 算出した方がそれっぽくなるかも。
(2) 複数選択時の「現在のセル位置」が、Excel と DataGridView では逆
Excel の場合、「ドラッグ開始位置のセル」が ActiveCell となるのに対し、 DataGridView は「カーソル位置/ドラッグ完了位置のセル」が CurrentCell となる。
|