السلام عليكم و رحمة الله و بركاته ....لدي داتا جريد بها مجموعة حقول من ضمنها حقلين من النوع كومبوبوكس. الكومبو الأول يأتي بأسماء المدن و عند إختيار مدينة ما يتم ملء الكومبو الثاني بفنادق هذه المدينة ....قمت بوضع هذا الكود من أجل هذه العملية ...
private void dataGridrooms_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
{
try
{
if(col_index ==2)
{
grid_combo = (ComboBox)e.Control;
grid_combo.DataSource = null;
comb.combo_bounding(grid_combo, "select id,name from hotels where saudi_city_id=" + (int)dataGridrooms.Rows[row_index].Cells["cities"].Value + "", "hotels", CommandType.Text);
grid_combo.SelectedIndexChanged -= new EventHandler(grid_combo_SelectedIndexChanged);
grid_combo.SelectedIndexChanged += new EventHandler(grid_combo_SelectedIndexChanged);
}
}
catch
{
}
}كما نلاحظ أنني قد أستخدمت الحدث EditingControlShowing ، حيث يتم فحص الكنترول الموجودة في العمود عن طريق هذا الكود:grid_combo = (ComboBox)e.Control;، فإذا كانت الكومبو الثانية يتم ملئها عن طريق الكود أعلاه...المشكلة أنني بعد أن أختار الفندق من الكومبو الثانية فإن شكل القلم الذي يدل على أن الداتاجريد ما زالت في وضع تعديل البيانات لا يزال موجودا"، و هذا لا يجعلني انتقل إلى أي خلية أخرى داخل الداتاجريد و لا حتى أي كنترول في الفورمة، بل لا أستطيع إغلاق الفورم!!! .
أستنتجت و ربما يكون إستنتاجي صحيحا" أن حدث EditingControlShowing لا يزال مفعلا" و يمنع أي حدث آخر من الإنطلاق ...لذا جربت وضع هذا الكود لعله ينهي الحدث و لكنه لم يفعل :
void grid_combo_SelectedIndexChanged(object sender, EventArgs e)
{
dataGridrooms.Rows[row_index].Cells["hotel"].Value = grid_combo.SelectedValue;
DataGridViewCellEventArgs vv= new DataGridViewCellEventArgs(col_index, row_index);
dataGridrooms_CellEndEdit(dataGridrooms ,vv );
}
private void dataGridrooms_CellEndEdit(object sender, DataGridViewCellEventArgs e)
{
dataGridrooms.EndEdit();
}قمت بعمل breakpoint لتتبع الكود فوجدت ان البرنامج لا يذهب مطلقا" للحدث CellEndEdit ...و وضعت هذا السطر dataGridrooms.EndEdit(); في أماكن مختلفة فلم يفلح الأمر ...
ما هي آرائكم لإنهاء هذا الحدث الملعون EditingControlShowing ؟