转自博客园
Here is a bit of sample code that allows you to drag and drop a cellvalue in a DataGridView (don’t forget to set the AllowDrop property of the DataGridView to true). Notice that you need to translate the X and Y properties of the DragEventArgs first (unlike the X and Y properties of the MouseEventArgs):
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. dataGridView1. Rows [info. RowIndex ]. Cells [info. ColumnIndex ]. Value = null;
this. DoDragDrop ( value, DragDropEffects. Move );
}
}
}
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;
}
}
private void dataGridView1_DragEnter ( object sender, DragEventArgs e )
{
e. Effect = DragDropEffects. Move;
}
兩個DataGridView拖放也是一樣,只要把DragDrop、DragEnter移動到DataGridView2舊可以了,兩個DataGridView需要設定拖放True