Cześć!
Mam mały problem.
Piszę aplikację w której miłym dodatkiem byłoby przenoszenie pewnych elementów w tabelach DataGridView.
Po prostu użytkownik przenosi z komórki A pewne wartości (tekstowe) do komórki B.
Oczywiście udało mi się to wykonać, ale problem leży w małym szczególe. Kod wygląda tak:
private void DataGridView1_MouseDown(object sender, MouseEventArgs e)
{
DataGridView.HitTestInfo info = this.DataGridView1.HitTest(e.X, e.Y);
if (info.RowIndex != -1 && info.ColumnIndex != -1)
{
Object value = this.DataGridView1.Rows[info.RowIndex].Cells[info.ColumnIndex].Value;
if (value != null)
{
this.DoDragDrop(value, DragDropEffects.Copy);
}
}
}
private void DataGridView1_DragDrop(object sender, DragEventArgs e)
{
Point p = this.DataGridView1.PointToClient(new Point(e.X, e.Y));
DataGridView.HitTestInfo info = this.DataGridView1.HitTest(p.X, p.Y);
if (info.RowIndex != -1 && info.ColumnIndex != -1)
{
Object value = (Object)e.Data.GetData(typeof(string));
this.DataGridView1.Rows[info.RowIndex].Cells[info.ColumnIndex].Value = value;
}
e.Data.SetData(null);
}
private void DataGridView1_DragEnter(object sender, DragEventArgs e)
{
e.Effect = DragDropEffects.Copy;
}
Wszystko działa idealnie, poza pewnym szczegółem.
Gdy przenoszę wartości do innych komórek to po zakończeniu tych operacji muszę kliknąć dwa razy w DataGridView, aby komponent ten się "odblokował".
Jeśli tego nie zrobię to mogę przenosić elementy dowolnie, ale kliknięcie na daną komórkę jest jakby "niezauważone" i nie następuje.
AllowDrop jest oczywiście na true. Po prostu proces przenoszenia jest jakby cały czas aktywny, aż do kliknięcia dwukrotnego (nie szybkiego, ale po prostu jeden klik, a po drugim komponent się odblokuje).
Wie ktoś co może być tego powodem i jak to naprawić?