دوست عزیز باید id اون سطر که باید کلید باشه رو بگیری بریزی تو یه متغییر پابلیک بعد بگی او سطری که idیش برابر با این متغییره رو حذف کن ارور ماله زمانی هستش که مقداری در پارامتر ریخته نشده یا ریخته شده عدد عجیب غریبیه....
مثلا من خودم در متد زیر متغییر رو تعریف کردم
public partial class Delete_Question : Form
{
public int memberid_delete;
.
.
.
.}
بعد تو فرمی که grid توش هست تو رویداد کلیک دکمه حذف اینو نوشتم
Delete_Question_Form dq = new Delete_Question_Form();
dq.memberid_delete = Convert.ToInt32(grd_view_member.SelectedRows[0].Cells["id"].Value);
بعد تو فرمی که ازم میپرسه میخوام پاک کنم یا نه اینو نوشتم
SqlCommand cmd = new SqlCommand("DeleteMember", con);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@id", memberid_delete);
con.Open();
cmd.ExecuteNonQuery();
con.Close()
خلاصه یه جوری باید مقدار فیلد کلیدت رو تو یه متغیر نگه داری اگه داری از چند فرم استفاده میکنی