مشكلة غريبة مع DataGridViewComboBoxCell ، في محاولة للتغييرات التلقائية
-
25-09-2019 - |
سؤال
لذا فإن هدفي هو بمجرد أن ينقر المستخدم على العنصر من قائمة القائمة المنسدلة ، ستستدعي الخلية تلقائيًا EndEdit (). أغرب شيء هو أن الكود أدناه سيعمل على 2nd-n comboBoxescells التي أسقطها وأختار القيم من ولكن لم يكن الأول. هل هناك شيء أفتقده هنا ؟؟
protected override void OnCellClick(DataGridViewCellEventArgs e)
{
base.OnCellClick(e);
DataGridViewComboBoxEditingControl control = this.EditingControl as DataGridViewComboBoxEditingControl;
if (control != null)
{
control.DropDownClosed += new EventHandler(control_DropDownClosed);
}
}
void control_DropDownClosed(object sender, EventArgs e)
{
this.EndEdit();
DataGridViewComboBoxEditingControl control = sender as DataGridViewComboBoxEditingControl;
control.DropDownClosed -= new EventHandler(control_DropDownClosed);
}
يجب أن أضيف هنا أنني أرث من DataGridView إذا لم يكن ذلك واضحًا
المحلول
عندما شيء مثل "أغرب شيء هو أن الكود أدناه سيعمل على 2nd-n comboBoxescells التي أسقطها وأختار القيم من ولكنها لم تكن الأولى أبدًا"يحدث ، غالبًا ما يحدث الحدث قبل أن يتم القيام بشيء تحتاجه.
في مثالك ، أود أن أقول أنه في المرة الأولى ، عند النقر فوق ،
DataGridViewComboBoxEditingControl control = this.EditingControl as DataGridViewComboBoxEditingControl;
يعطيك control == null
.
ربما يجب عليك تغيير الحدث الذي تم اختياره للقيام بأشياءك من Click
ل SelectedIndexChanged
أو SelectedValueChanged
?
أتمنى أن يساعدك هذا،
لا تنتمي إلى StackOverflow