PDA

View Full Version : مشکل تداخل کلید Delete برای button و textbox



narges_j
سه شنبه 04 فروردین 1394, 14:04 عصر
سلام

من برای دکمه حذف در فرم کلید delete را تعریف کردم ولی اگر تکس باکس فعال باشد و کاربر بخواهد متن داخل آن را با کلید delete حذف کند، دکمه حذف هم اجرا می شود. چطور می توانم این مشکل را حل کنم؟

با تشکر

Hamid2547
سه شنبه 04 فروردین 1394, 14:15 عصر
اینطوری نمیشه درست نظر داد، کدتون رو اینجا قرار بدید ببینیم چیکار کردید، حدسم اینه که کد مربوط به حذف تکست رو در جای درستی قرار ندادید.

narges_j
سه شنبه 04 فروردین 1394, 14:24 عصر
private void frmSalMali_KeyUp(object sender, KeyEventArgs e) {
if (e.Control & e.KeyCode == Keys.S)
{
btnSave.PerformClick();
}
else if (e.KeyCode == Keys.Delete)
{
btnDelete.PerformClick();
}
else if (e.Control & e.KeyCode == Keys.N)
{
btnNew.PerformClick();
}
}

mrprestige
سه شنبه 04 فروردین 1394, 15:31 عصر
سلام . امکانش هست درباره اشکالتون بیشتر توضیح بدید کامل متوجه نشدم

narges_j
سه شنبه 04 فروردین 1394, 15:35 عصر
در فرم چند تکس باکس هست.همان طور که می دونید برای پاک کردن متن تکس باکس هم میشه از backspace و delete میشه استفاده کرد. وقتی کاربر بخواد از دکمه delete برای پاک کردن استفاده کنه با کلید میانبری که من برای دکمه حذف از دیتابیس تعریف کردن تداخل پیش میاد و هر دو کار باهم انجام میشه.

abdullah20
سه شنبه 04 فروردین 1394, 16:58 عصر
دوست عزیز واضح توضیح بدید

narges_j
سه شنبه 04 فروردین 1394, 17:32 عصر
تصویر زیر را ببینید.اگر در تکس باکس کلید delete فشار داده بشه دکمه حذف هم انجام میشه و رکورد جاری را از پایگاه داده حذف می کنه.
129681

Hamid2547
سه شنبه 04 فروردین 1394, 17:44 عصر
ساده ترین راه اینه که برای پاک کردن هم مثل بقیه از کنترل دلیت استفاده کنید، ولی خوب از اونجایی که میدونم این راه حل به ذهن خودتون هم رسیده و نمیخاید این کارو بکنید، من اگر بودم کلید دلیت رو اگر فوکوسش روی تکتست باکس بود غیرفعال میکردم:

if (e.KeyCode == Keys.Delete && TextBox1.Focused)
{
e.SuppressKeyPress = true;
}
ولی خوب بدیش اینه این کارو باید برای همه تکست باکس ها تکرار کنید.

abdullah20
سه شنبه 04 فروردین 1394, 18:13 عصر
private void Form1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Delete && this.ActiveControl.GetType() != typeof(TextBox) )
//کد حذف
}