|  | ■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 となる。
 
 |