با سلام
شما می تونید یه لیست داشته باشید و در رویدادهای مربوطه یک رکورد به لیست اضافه کنید. یعنی باید نوع و نام کنترلی که عملیات روش انجام شده (مثلا دکمه، چک باکس، گرید و ...) + نوع عملیات (دابل کلیک، کلیک، حرکت و ...) + نقطه مربوطه رو در لیست ذخیره کنید.
موقع بازیابی هم باید اطلاعات هر ردیف رو بررسی کنید که اولا چه کنترل هست و اسمش چیه ثانیا چه عملیاتی هست و ثالثا در کدام نقطه است.
مثلا میشه اطلاعات رو در یک رشته ذخیره و بعدا تحلیل کرد:
List<string> _myList=new List<string>();
حالا به فرض در رویداد دابل کلیک:
_myList.Add("doubleClick"+";"+"Button"+";"+"myButt on1"+";"+"110"+","+"50");
در کد بالا اولا مشخص کردیم که عملیات دابل کلیک در دکمه myButton1 هست و ثانیا در نقطه ی 110 و 50 این اتفاق افتاده.
حالا موقع بازیابی شما باید این رشته رو با استفاده از متد split و کاراکترهای ; و , تجزیه کنید.
بعد برای تکرار عملیات باید با توجه به نوع و نام کنترل، رویداد مربوطه رو فراخوانی کنید مثلا برای دابل کلیک:
myButton1_DoubleClick(sender, null);
کد بالا رویداد دابل کلیک دکمه رو اجرا می کنه.
به نظرم با این روش می تونید کار رو شروع کنید و کم کم مشکلات رو حل کنید تا به نتیجه برسید.