PDA

View Full Version : سوال: انجام کار کلید tab با کلید* و اضافه کردن 3 صفر به عدد با زدن کلید *



samanff2000
پنج شنبه 04 مهر 1398, 14:13 عصر
با سلام
من یک برنامه دارم که دو تا تکست باکس هست که وقتی در اولی مقداری (مثلا شماره مشتری) رو که وارد میکنی با زدن کلید tab اطلاعات جستجو میشه و در صورتی که مقداری در دیتابیس داشته باشه اسم و فامیل شخص نمایش داده میشه . حالا میخوام با کلید * هم همین کار انجام بشه اما هر کاری میکنم وقتی کلید * رو میزنم میاد در تکس باکس شماره مشتری هم خود * رو به اعداد اضافه میکنه . برای این کار راهی اگر دارید لطفا راهنمایی بفرمایید .
مورد دوم هم در تکس باکس هایی که مقدار عددی دارند به جای اینکه کاربر مجبور باشه 3 بار کلید صفر رو بزنه میخوام وقتی که کلید * رو میزنه بیاد 3 صفر خودش به عدد اضافه کنه و در این حالت مانند مشکل بالا نباید کاراکتر * در تکست باکس بشینه .
با تشکر

samanff2000
شنبه 06 مهر 1398, 09:40 صبح
سلام دوستان امکانش هست راهنمایی بفرمایید ؟

hamidrezax1
یک شنبه 07 مهر 1398, 18:46 عصر
سلام دوست عزیز یه سری به این قسمت (https://docs.microsoft.com/en-us/dotnet/api/system.windows.forms.keys?view=netframework-4.8) بزنید

samanff2000
دوشنبه 08 مهر 1398, 16:04 عصر
سلام دوست عزیز ممنون که پاسخ دادید . من این بخش رو دیدم و همه این ها رو هم به صورت تستی مقدار دهی کردم . اما باز هم به اون چیزی که باید نرسیدم . اولا هیچکدوم برای کلید * کار نکرد و بعد این که برای تمام این حالت ها باز هم داخل خود تکست باکس مقدارش رو اظافه میکنه .
اگر ممکنه راهنمایی بفرمایید ممنون

hamidrezax1
سه شنبه 09 مهر 1398, 20:24 عصر
سلام دوست عزیز من تکه کد ها رو خدمتت توضیح میدم خودتون الهام بگیرین


Dim a As Integer
a = Asc(TextBox1.Text)
MessageBox.Show(a)

با تکه کد بالا شماره اسکی دکمه صفحه کلید برات نمایش داده میشه که به نوعی کد اسکی * رو و یا هر کلیدی که لازم داشتین رو بهتون نمایش میده

If Asc(e.KeyChar) = 42 Then
a = Me.TextBox1.Text
a = a.Replace("*", "")
a = a.ToString + "000"
Me.TextBox1.Text = ""
Me.Timer1.Enabled = True
End If

با کد بالا و تکه کد پایین سه صفر به تکس باکس اضافه میشه

Me.Timer1.Enabled = False
Me.TextBox1.Text = ""
Me.TextBox1.Text = a

در تایمر با این تکه کد باعث وقفه میشیم تا * پاک بشه

150801

Mahmoud.Afrad
سه شنبه 09 مهر 1398, 23:33 عصر
سلام دوست عزیز ممنون که پاسخ دادید . من این بخش رو دیدم و همه این ها رو هم به صورت تستی مقدار دهی کردم . اما باز هم به اون چیزی که باید نرسیدم . اولا هیچکدوم برای کلید * کار نکرد و بعد این که برای تمام این حالت ها باز هم داخل خود تکست باکس مقدارش رو اظافه میکنه .
اگر ممکنه راهنمایی بفرمایید ممنون

با استفاده از پراپرتی Handled از system.windows.forms.keyeventargs (https://docs.microsoft.com/en-us/dotnet/api/system.windows.forms.keyeventargs) میتونید جلوی درج کاراکتر خاص رو بگیرید

danialafshari
چهارشنبه 10 مهر 1398, 13:17 عصر
private void TextBox3_KeyPress(object sender, KeyPressEventArgs e) {
if (e.KeyChar==42)
{
e.Handled = true;
//some code
}
}

samanff2000
پنج شنبه 11 مهر 1398, 12:11 عصر
سلام دوستان من روش هایی رو که فرموده بودید تست کردم و همه جواب داد بسیار ممنونم(در صفحات من دکمه تشکر زیر پست ها نمیاد که بتونم از تک تکتون تشکر کنم)

samanff2000
پنج شنبه 11 مهر 1398, 12:27 عصر
دوستان من برای کلید * جواب گرفتم اما برای کلید TAB این کد رو نوشتم اما جواب نمیده و بازدن کلید tab کلا KeyPress اجرا نمیشه و کار تب رو انجام میده اگر ممکنه این موضوع رو هم یه توضیح بدید ممنون

if (e.KeyChar == 42 || e.KeyChar == Convert.ToChar(Keys.Tab))

ASHKANLAEI
پنج شنبه 11 مهر 1398, 12:53 عصر
باید پراپرتی acceptstab رو برابر true قرار بدین

samanff2000
چهارشنبه 08 آبان 1398, 14:16 عصر
باید پراپرتی acceptstab رو برابر true قرار بدین
سلام تست کردم باز هم همون کار tab رو انجام میده

ASHKANLAEI
چهارشنبه 08 آبان 1398, 14:49 عصر
در رویداد previewKeyDown تکست باکس خودتون، این کد رو قرار بدین:
if (e.KeyData == Keys.Tab)
e.IsInputKey = true;

samanff2000
چهارشنبه 08 آبان 1398, 16:25 عصر
باید پراپرتی acceptstab رو برابر true قرار بدین
سلام تست کردم باز هم همون کار tab رو انجام میده

ASHKANLAEI
چهارشنبه 08 آبان 1398, 16:38 عصر
من انجام دادم درست کار کرد.
فایل ضمیمه رو چک کنید.

samanff2000
یک شنبه 12 آبان 1398, 08:45 صبح
ممنونم لطف کردی