سلام.
اگر فرض کنیم از یه دیتاتیبل برای اتصال داده ها به گرید استفاده کرده باشید یه راهش اینه که دیتاتیبل رو دستخوش تغییرات کنی و دوباره دیتاتیبل رو به گرید نسبت بدی (سرعت اعمال تغییرات روی دیتاتیبل خیلی بیشتر از سرعت اعمال تغییرات روی خود گرید هست. چون دیتاتیبل شما درون رم قرار میگیره و کارکردن باهاش به مراتب سریعتر از خود گرید هست).
مثلا برای حرکت از پایین به بالا :
1. ابتدا محتویات سطر بالا رو بردارید (سطر بالای سطر جاری).
2. سطر جاری رو جایگزین سطر بالایی کنید.
3. سطری رو که در مرحله 1 برداشتید، جایگزین سطر جاری کنید.
if(dataGridView1.CurrentRow.Index > 0)
{
object[] rowmove = dt.Rows[dataGridView1.CurrentRow.Index -1].ItemArray;
dt.Rows[dataGridView1.CurrentRow.Index-1].ItemArray = dt.Rows[dataGridView1.CurrentRow.Index].ItemArray;
dt.Rows[dataGridView1.CurrentRow.Index].ItemArray = rowmove;
dataGridView1.DataSource = dt;
}
شرط if هم بخاطر این هست که اگر سطر جاری، اولین سطر باشه دیگه نمیشه رو به بالا حرکت کرد.
موفق باشید.