سمانه علوی فر
یک شنبه 18 اردیبهشت 1390, 11:22 صبح
فرض کنید یک آبجکت از یک فرم ساخته ایم
می خواهیم برای دکمه ok این فرم یک تابع تعریف کنیم
فرض کنید برحسب اینکه کجا فرم را صدا می زنیم تابعی جدید به آن نسبت می دهیم
با توجه به تعاریف deligate هنگام هر بار صدا زدن فرم و کلیک دکمه ok تمام توابع تعریف شده برای آن اجرا می شوند.
چه کنیم که این اتفاق نیفتد؟
یعنی هر بار فقط تابع مربوطه صدا شود؟؟
ساخت object از فرم
frmPopUp.Visible = true;
frmPopUp.Text = "لیست شعب بانکها";
frmPopUp.btn_OK.Click += new System.EventHandler(btn_OK_BanksBranches_Click);
frmPopUp.Show();
تابع btn_OK_BanksBranches_Click
private void btn_OK_BanksBranches_Click(object sender, EventArgs e)
{
this.dgv_Cheq.CurrentRow.Cells["clmnBranchTitle"].Value = frmPopUp.dgv_Info.CurrentRow.Cells[1].Value.ToString();
frmPopUp.Visible = false;
}
یک تابع دیگر برای دکمه ok
private void btn_OK_City_Click(object sender, EventArgs e)
{
this.dgv_Cheq.CurrentRow.Cells["clmnCity"].Value = frmPopUp.dgv_Info.CurrentRow.Cells[0].Value.ToString();
frmPopUp.Visible = false;
}
زمان اجرای هر کدام از دستوراتی که فرم را صدا می زنند همه توابع btn_OK اجرا می شوند
چگونه این اشکال برطرف می شود؟
می خواهیم برای دکمه ok این فرم یک تابع تعریف کنیم
فرض کنید برحسب اینکه کجا فرم را صدا می زنیم تابعی جدید به آن نسبت می دهیم
با توجه به تعاریف deligate هنگام هر بار صدا زدن فرم و کلیک دکمه ok تمام توابع تعریف شده برای آن اجرا می شوند.
چه کنیم که این اتفاق نیفتد؟
یعنی هر بار فقط تابع مربوطه صدا شود؟؟
ساخت object از فرم
frmPopUp.Visible = true;
frmPopUp.Text = "لیست شعب بانکها";
frmPopUp.btn_OK.Click += new System.EventHandler(btn_OK_BanksBranches_Click);
frmPopUp.Show();
تابع btn_OK_BanksBranches_Click
private void btn_OK_BanksBranches_Click(object sender, EventArgs e)
{
this.dgv_Cheq.CurrentRow.Cells["clmnBranchTitle"].Value = frmPopUp.dgv_Info.CurrentRow.Cells[1].Value.ToString();
frmPopUp.Visible = false;
}
یک تابع دیگر برای دکمه ok
private void btn_OK_City_Click(object sender, EventArgs e)
{
this.dgv_Cheq.CurrentRow.Cells["clmnCity"].Value = frmPopUp.dgv_Info.CurrentRow.Cells[0].Value.ToString();
frmPopUp.Visible = false;
}
زمان اجرای هر کدام از دستوراتی که فرم را صدا می زنند همه توابع btn_OK اجرا می شوند
چگونه این اشکال برطرف می شود؟