سلام.
این دو آرگومان، برای تمام رویدادهای مربوط به اشیا مختلف وجود دارند و شما هر رویدادی (event ) رو که تعریف کنید متناسب با اون رویداد و اون شی این مقادیر متفاوت خواهند بود.
در حالت کلی object تعیین کننده کلاس اون شی هست که قراره براش رویداد مورد نظر تعریف بشه و e هم یکسری خصوصیات از رویداد مورد نظر برای همون شی دراختیارمون قرار میده.
مثلا فرض کنید روی یکی از فرم ها دابل کلیک کنید و رویداد Form1_Load رو فعال کنید. در این مورد object sender به اینصورت خواهد بود که object مشخص میکنه این رویداد (رویداد Load) برای یک فرم (از جنس کلاس Form) هست و sender هم مشخص میکنه که این ارسال کننده Form1 هستش.
حالا فرض بگیرید یه TextBox مثلا TxtName براش رویداد TxtName_TextChanged بخواید تعریف کنید. در این مورد object sender به این صورت خواهد بود که object شما از جنس TextBox (از جنس کلاس TextBox) خواهد بود و sender که اطلاعاتش باید ارسال بشه در اینجا همون TxtName خواهد بود.
در مورد EventArg که با e مشخص میشه توضیح اضافه اینکه برای بعضی از رویدادهای خاص در یکسری از اشیا، اطلاعات ارزشمندی رو در اختیارمون میذاره.
مثلا برای یک Textbox ما رویدادی داریم به نام KeyDown که زمانی فعال میشه که یک دکمه پایین نگه داشته بشه. در اینجا نام آرگومان به KeyEventArg تغییر پیدا میکنه و آرگومان e بهتون کمک میکنه تا متوجه بشید کاربر چه دکمه ای رو فشار داده :
private void TxtName_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Delete)
{
MessageBox.Show("you press Delete Key");
}
}
در کل به این نکته دقت کنید زمانیکه قبل از EventArg کلمه ای بیاد، اینو بدونید که آرگومان e اطلاعات خیلی مفیدی رو درباره رویداد مربوط به اون شی (در مثال بالا رویداد KeyDown از شی TxtName) در اختیارتون میذاره.