PDA

View Full Version : سوال: مشکل با اینتر روی DataGridView



unique1984
پنج شنبه 27 فروردین 1388, 21:31 عصر
سلام
من یه دیتاگریدویو در یه فرم دارم که ReadOnly هستش و نمیشه در اون اطلاعات وارد کرد.
حالا می خوام وقتی روی یه سطر از اون کلید اینترو زدم اطلاعات یه سلول اون مثلا در یه تکست باکس نمایش داده بشه.
من در رویداد keydown گرید ، بعد از چک کردن نوع کلید ، اطلاعات اون سلول (از سطر جاری) رو در تکست باکس می ریزم. اما مشکل اینه که به محض زدن اینتر سطر بعدی انتخاب میشه و اطلاعات سلول اون سطر در تکست من ریخته میشه. یعنی اگه من سطر 2 باشم و اینتر رو بزنم به جای اینکه اطلاعات سلولی از سطر 2 رو برگردونه،میره سر سطر 3 و اطلاعات سلولی از سطر 3 رو نمایش میده.
علتش و راه حل مشکل چیه؟
مرسی

khaste_007
جمعه 28 فروردین 1388, 00:49 صبح
برنامه رو بدون اینکه اداره کننده رویداد خودتون رو اد کنید اجرا کنید متوجه علت می شید.
بله رفتار پیش فرض پس از زدن کلید اینتر همینه که یه سطر پایین میره حالا شما یه اداره کننده رویداد جدید نوشتید که به اداره کننده رویداد های قبلی اضافه شده پس اول اونا اجرا میشن و بعد هم آخری .
حالا راه حل:
می تونید اداره کننده رویداد اصلی رو اورراید یا اصلا حذف کنید که باید اسم اون رو بدونید و کارهای دیگه ای هم که میکنه بدونید و انجام بدید که من نمی دونم ولی راه ساده تر این هست که قبل از اینکه در اداره کننده رویدادتون هر کاری رو بکنید اول سطر جاری دیتا گرید ویو رو یکی کم کنید و بعد تمام کارهاتون رو انجام بدید.

unique1984
جمعه 28 فروردین 1388, 11:34 صبح
ممنون. راستش تا بحال متد اورراید نکردم. ممکنه کدشو بذارین؟

hasan_esfahan
جمعه 28 فروردین 1388, 20:47 عصر
این یک روش سادست


private void dataGridView1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
MessageBox.Show(dataGridView1.CurrentRow.Index.ToS tring());
e.Handled = true;
}
}

ahmadr
جمعه 28 فروردین 1388, 22:05 عصر
private void dataGridView1_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
MessageBox.Show(dataGridView1.CurrentRow.Index.ToS tring());
e.KeyChar = '\0';
}
}