ثبت دیتا با فشردن کلیک اینتر در فرم با وجود فوکوس روی اشیا دیگر
سلام
چطور میشه با فشردن کلیک اینتر در فرم با وجود فوکوس روی اشیا دیگر مثل تکس باکس یک تابع ای اجرا بشه؟
من از رویداد Form_KeyDown استفاده کردم ولی چون فوکوس روی تکس باکس هست تابع فراخوانی نمیشه!
private void AddForm_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
_InsertForm();
}
}
و همچنین آیا دکمه ها هم shortcut key دارند؟
نقل قول: ثبت دیتا با فشردن کلیک اینتر در فرم با وجود فوکوس روی اشیا دیگر
شما تو رویداد KeyUp فرمتون بنویسید .من با این روش کارامو انجام میدم و خوب جواب داده
private void CategoryFrm_KeyUp(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.F2)
{
btnNew_Click(null, null);
}
if (e.KeyCode == Keys.F3)
{
btnNew2_Click(null, null);
}
if (e.KeyCode == Keys.Escape)
{
btnCancel_Click(null, null);
}
if (e.KeyCode == Keys.F1)
{
btnClose_Click(null, null);
}
}
نقل قول: ثبت دیتا با فشردن کلیک اینتر در فرم با وجود فوکوس روی اشیا دیگر
نقل قول:
نوشته شده توسط
sg.programmer
سلام
چطور میشه با فشردن کلیک اینتر در فرم با وجود فوکوس روی اشیا دیگر مثل تکس باکس یک تابع ای اجرا بشه؟
من از رویداد Form_KeyDown استفاده کردم ولی چون فوکوس روی تکس باکس هست تابع فراخوانی نمیشه!
private void AddForm_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
_InsertForm();
}
}
با سلام
کدتون مشکل نداره فقط تنها کاری که باید بکنید خصوصیت KeyPreview فرمتون رو True کنید
نقل قول:
و همچنین آیا دکمه ها هم shortcut key دارند؟
دکمه های پیش فرض خیر ولی کامپوننت هایی مثل janus و devComponent بله
برای کلید Enter هم یک خصوصیت فرم داره بنام AcceptButton که میتونید دکمه مورد نظر رو توش تنظیم کنید. از این پس کلید enter اون button رو اجرا می کنه
همچنین خاصیت CancelButton که با دکمه ESC هست و معمولا برای دکمه بستن فرم استفاده میشه
موفق باشید
نقل قول: ثبت دیتا با فشردن کلیک اینتر در فرم با وجود فوکوس روی اشیا دیگر
من از این روش استفاده کردم کدوم بهتره؟ KeyPreview & ProcessCmdKey
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
if (keyData == Keys.Enter)
{
_InsertForm();
return true;
}
else if (keyData == Keys.F1)
{
_btnNewClick();
return true;
}
else if (keyData == Keys.Escape)
{
Close();
return true;
}
return base.ProcessCmdKey(ref msg, keyData);
}
نقل قول: ثبت دیتا با فشردن کلیک اینتر در فرم با وجود فوکوس روی اشیا دیگر
با سلام
همون روشی که بالا گفتم
نقل قول:
برای کلید Enter هم یک خصوصیت فرم داره بنام AcceptButton که میتونید دکمه مورد نظر رو توش تنظیم کنید. از این پس کلید enter اون button رو اجرا می کنه
همچنین خاصیت CancelButton که با دکمه ESC هست و معمولا برای دکمه بستن فرم استفاده میشه
نقل قول: ثبت دیتا با فشردن کلیک اینتر در فرم با وجود فوکوس روی اشیا دیگر
تشکر آقای افشاری
یک مشکلی که پیش میاد اینه که اگه روی کامبو باکس باشه و کاربر در موقع پر کردن مقداری باشه و برای انتخاب اینتر را میزنه و در این حالت دکمه ثبت عمل میشه که نمیخوام کلید اینتر روی بعضی از اشیاء اینتر خورده و اعمال بشه. برای رفع این مشکل چیکار باید کرد؟
نقل قول: ثبت دیتا با فشردن کلیک اینتر در فرم با وجود فوکوس روی اشیا دیگر
نقل قول:
نوشته شده توسط
sg.programmer
تشکر آقای افشاری
یک مشکلی که پیش میاد اینه که اگه روی کامبو باکس باشه و کاربر در موقع پر کردن مقداری باشه و برای انتخاب اینتر را میزنه و در این حالت دکمه ثبت عمل میشه که نمیخوام کلید اینتر روی بعضی از اشیاء اینتر خورده و اعمال بشه. برای رفع این مشکل چیکار باید کرد؟
خواهش میکنم
من در پروژه هام برای ثبت از کلید ترکیبی (Ctrl + Enter) استفاده می کنم و روی Button هم کلید ترکیبیهامو مینویسم
و از Enter برای Tab شدن بین Object ها استفاده می کنم
چون از کامپوننت استفاده می کنم نیازی به کدنویسی برای کلید ترکیبی نیست ولی شما می تونید از این کد استفاده کنید
private void Form1_KeyDown(object sender, KeyEventArgs e)
{
if (e.Control && e.KeyCode == Keys.Enter)
{
MessageBox.Show("Control + Enter Is Pressed...");
}
}
اینم برای Tab شدن با Enter :
protected override bool ProcessDialogKey(Keys keyData)
{
if (keyData == Keys.Enter)
{
return base.ProcessDialogKey(Keys.Tab);
}
return base.ProcessDialogKey(keyData);
}
دیگه هر جور میلتونه
موفق باشید