سلام
من ميخوام به جاي استفاده از دكمه tab از اينتر براي حركت در textbox ها استفاده كنم اگر امكان داره لطفا منو راهنمايي كنيد.
سلام
من ميخوام به جاي استفاده از دكمه tab از اينتر براي حركت در textbox ها استفاده كنم اگر امكان داره لطفا منو راهنمايي كنيد.
توی Key_Down باید اینو بنویسی :
If (Key.keyCode==Keys.Enter)
بعد داخلش کدهای مربوطه رو بنویسی .
موفق باشید .
استخدام برنامه نویس دات نت (Asp.net,C#,jquery,...)
ترجیحا خراسان شمالی ، بجنورد
به صورت پاره وقت و تمام وقت
ارسال اطلاعات و رزومه کاری به Job@tosa.ir
دوست عزیز قبل از تاپیک زدن، یه سرچی بکنید ببینید مطلبتون مثلش هست یا نه.
این بحث بار ها مطرح شده. کافیه در رویداد KeyPress بگید اگر e.KeyChar برابر با (Enter(\r\n بود، به کنترل بعدی برود.
آخرین ویرایش به وسیله h.jaza : چهارشنبه 03 مهر 1387 در 21:19 عصر
برای هر textbox کد زیر را وارد کن
مثلا اگر 2 تا textbox در بر نامه داری برای textbox اولی کد:
privatevoid textBox1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyValue == 13)
textBox2.Focus();
}
و برای دومی کد زیر
privatevoid textBox2_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyValue == 13)
textBox1.Focus();
}
----------
کدی که من نوشتم برا مواقعی خوبه که تعداد textbox ها کم باشه
اگه تعدادشون زیاد باشه کدنویسی برا همشون مشکل و زیاد میشه
کد شماره 5 واقعا کامل هست
آخرین ویرایش به وسیله mary3541 : چهارشنبه 03 مهر 1387 در 21:49 عصر
می تونی توی رویداد
KeyDown
مربوط به کنترل TextBox اِت به اینصورت بنویسی:
private void textBox1_KeyDown(object sender, KeyEventArgs e)
{
if(e.KeyCode== Keys.Enter)
SendKeys.Send("{TAB}");
}
می تونی در رویداد keydown مربوط به فرم اصلی ک
if (e.KeyCode == Keys.Enter)
SendKeys.Send("{TAB}");
بنویسی البته قبلش باید خاصیت keypreview رو true کنی و همه کنترلها رو توسط tab order در منوی view مرتبشون کنی
شما باید از یکی از دو کد زیر استفاده بکنید.(یکی Comment شده) ولی ترجیحا از کد اصلی (بدون Comment) استفاده شود چرا که اگر شما تعداد زیادی تکست باکس داشته باشین که بخواهید با اینتر زدن روی هر کدوم به کنترل بعدی برین، خیلی کد نویسیش زیاد و دردسر آفرینه. بهترین کار اینکه این کدو در یکی از تکست باکس ها بنویسید و بعد ...
... خیلی ساده رویداد KeyDown باقی تکست باکس رو به این رویداد لینک میدین:
اینجوری دیگه نیازی به کد نویسی جداگانه برای هر تکست باکس نیست.
این کد رو تو Form_Load بنویس:
Action<Control> checkControl = null;
checkControl = delegate(Control control)
{
if (control is TextBox)
(control as TextBox).KeyDown += delegate(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
SendKeys.Send("{TAB}");
};
else
foreach (Control subControl in control.Controls)
checkControl(subControl);
};
checkControl(this);
سلام من از کدی که دوست عزیزمون آقای mohammad272005 گفته بودن استفاده کردم اما توی این قسمت error میده:
(control as TextBox).KeyDown += delegate(object sender, KeyEventArgs e)
که Error! این هستش:
Error 1 A local variable named 'e' cannot be declared in this scope because it would give a different meaning to 'e', which is already used in a 'parent or current' scope to denote something else
لطفا راهنمایی بفرمایید که ایراد کار من کجاست؟ و چطور رفعش کنم، ممنون.
این تو کدهای فرمت بنداز (خارج از form_load)
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
if (msg.Msg == 256 && keyData == System.Windows.Forms.Keys.Enter)
{
// Execute an alternative action: here we tabulate in order to focus on the next control in the formular
if (this.ActiveControl.ToString().Contains("GlassButt on"))
// GlassButton.UserControl1
return base.ProcessCmdKey(ref msg, keyData);
else
{
System.Windows.Forms.SendKeys.Send("{TAB}");
// return true to stop any further interpretation of this key action
return true;
}
}
return base.ProcessCmdKey(ref msg, keyData);
}