PDA

View Full Version : سوال: جا به جا شدن مکان نما بین texbox ها توسط کلید Enter



samsami
چهارشنبه 30 فروردین 1391, 14:41 عصر
با سلام خدمت دوستان عزیز
من یک کد دارم که مکان نما را بین texbox ها جا به جا می کنه به وسیله کلید enter ولی مشکل داره
مشکلش این است که مثلا کلمه ali را توی texbox می نویسیم وقتی که اینتر می زنیم این نوشته پاک میشه و به texbox بعدی میره

من می خوام اطلاعاتش حفظ بشه

این کدش است ولی اشتباهی که گفتم را داره:


if (e.KeyCode == Keys.Enter)
this.SelectNextControl(ActiveControl, true, true, true, true);

ardeshir1365
چهارشنبه 30 فروردین 1391, 14:48 عصر
سلام
تو رویداد keypress تکست باکس اولت اینو بنویس

if (e.KeyChar == 13)
{
textbox2.Focus();
}


کد خودت رو هم پاک کن

samsami
چهارشنبه 30 فروردین 1391, 14:59 عصر
دوست عزیز تست کردم باز هم نوشته رو پاک میکنه

banitaba.ommolketab
چهارشنبه 30 فروردین 1391, 15:09 عصر
قبل از اینکه فوکوس را به تکست باکس بعدی بدی محتویات تکست باکست را داخل یه متغیر ذخیره کن و دوباره بریز داخلش.

if (e.KeyChar == 13)
{
string txt = textBox1.Text;
textBox2.Focus();
textBox1.Text = txt;
}


البته این روش معقولی نیست . توی سایت بگردی زود به جواب میرسی

esiprogrammer
چهارشنبه 30 فروردین 1391, 15:10 عصر
راهش اینه که کلید enter رو بجای tab ,override کنی

اینطوری
protected override bool ProcessDialogKey(System.Windows.Forms.Keys keyData)
{
if (keyData == Keys.Return)
{
keyData = Keys.Tab;
}
return base.ProcessDialogKey(keyData);
}

samsami
چهارشنبه 30 فروردین 1391, 15:38 عصر
راهش اینه که کلید enter رو بجای tab ,override کنی

اینطوری

protectedoverridebool ProcessDialogKey(System.Windows.Forms.Keys keyData)
{
if (keyData == Keys.Return)
{
keyData = Keys.Tab;
}
returnbase.ProcessDialogKey(keyData);
}



این کد رو کجا بنویسیم
در ضمن کدها را بین علامت # قرار بده که بشه بخونیش

sds1920
چهارشنبه 30 فروردین 1391, 19:35 عصر
private void Components_KeyUp(object sender, KeyEventArgs e)
{
if (e.KeyValue == 13)
new Microsoft.VisualBasic.Devices.Keyboard().SendKeys("{Tab}");
}

ardeshir1365
پنج شنبه 31 فروردین 1391, 09:23 صبح
سلام
تو رویداد keypress تکست باکس اولت اینو بنویس

if (e.KeyChar == 13)
{
textbox2.Focus();
}


کد خودت رو هم پاک کن

دوست عزیز برنامه ات رو خط به خط اجرا کن ببین کدام خط کد داره محتویات تکست باکستو پاک میکنه من همیشه تو برنامه هام از کد بالا استفاده میکنم و به هیچ وجه نه به مشکلی بر خوردم نه محتویات تکست باکسم پاک میشه
موفق باشی

jmfnima
پنج شنبه 31 فروردین 1391, 13:54 عصر
دوست عزيز راحتترين كار براي اين مشكل شما اينكه
ابتدا تب ها رو براي كنترل فرم خودت تنظيم كني سپس از گزينه Key preview فرمت رو به حالت true بزار و سپس در رويداد keydown فرمت كدهاي زير رو بنويس .
private void frmKaarhayeMohavale_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
this.SelectNextControl(ActiveControl, true, true, true, true);
}
}