PDA

View Full Version : انتقال به تکس باکس بعدی به طور خودکار



rezaiy.ali
پنج شنبه 06 دی 1386, 09:24 صبح
با سلام
من 3 تا تکس باکس دارم که فقط عدد قبول می کنه و خاصیت MaxLength را برابر 2 قرار دادم
حال می خوام زمانی که برای مثال عدد 12 را وارد کرد به طور خودکار به تکس باکس بعد بره.
من از این کد در رویداد KeyUp استفاده کردم اما اگر تکس باکس بعد دارایه مقدار باشه به تکس باکس بعد خودش انتقال پیدا می کنه.


if (Data_Day_Tb.Text.Length == 2)
{
SendKeys.Send("{Tab}");
}

لطفا راهنمایی بفرمایید که چطور میشه این مشکل را حل کنم.

mamali_programer
پنج شنبه 06 دی 1386, 09:38 صبح
سلام
بهتر نیست از رویداد Textchange استفاده کنی
یک شرط هم بزار که اگر طول نوشته به مقدار مورد نظر رسید به تکس باکس بعدی منتقل بشه

hassan razavi
پنج شنبه 06 دی 1386, 09:43 صبح
در شرطتون مشخص کنید که اگه طول برابر 2 و کلید زده شده Tab نباشد ، آنوقت ...

sinpin
پنج شنبه 06 دی 1386, 10:05 صبح
با سلام
من 3 تا تکس باکس دارم که فقط عدد قبول می کنه و خاصیت MaxLength را برابر 2 قرار دادم
حال می خوام زمانی که برای مثال عدد 12 را وارد کرد به طور خودکار به تکس باکس بعد بره.
من از این کد در رویداد KeyUp استفاده کردم اما اگر تکس باکس بعد دارایه مقدار باشه به تکس باکس بعد خودش انتقال پیدا می کنه.


if (Data_Day_Tb.Text.Length == 2)
{
SendKeys.Send("{Tab}");
}
لطفا راهنمایی بفرمایید که چطور میشه این مشکل را حل کنم.

احتمالا میخواین وقتی به تکست باکسی وارد شدیم که قبلا مقدار گرفته محتوای text اون رو select کنید :


private void textBox_Enter(object sender, EventArgs e)
{
if ((sender as TextBox).Text.Length == 2)
{
SendKeys.Send("{Home}+{End}");
}
}

private void textBox_TextChanged(object sender, EventArgs e)
{
if ((sender as TextBox).Text.Length == 2)
SendKeys.Send("{Tab}");
}
و از طرفی :

this.textBox1.Enter += new System.EventHandler(this.textBox_Enter);
this.textBox1.TextChanged += new System.EventHandler(this.textBox_TextChanged);
this.textBox2.Enter += new System.EventHandler(this.textBox_Enter);
this.textBox2.TextChanged += new System.EventHandler(this.textBox_TextChanged);
this.textBox3.Enter += new System.EventHandler(this.textBox_Enter);
this.textBox3.TextChanged += new System.EventHandler(this.textBox_TextChanged);

rezaiy.ali
پنج شنبه 06 دی 1386, 11:16 صبح
با تشکر از دوستان
من از کد sinpin (http://barnamenevis.org/forum/member.php?u=6235) استفاده کردم اما زمانی که فرم لود میشه اصلا رو تکس باکس ها Select نمیشه و به کنترل ها بعدی منتقل میشه.
البته این رو هم بگم که در خاصیت Leave کد زیر را قرار دادم


if (Data_Day_Tb.Text == "")
{
Data_Day_Tb.Text = "01";
}
elseif (Data_Day_Tb.Text == "0" || Data_Day_Tb.Text == "00")
{
Data_Day_Tb.Text = "01";
}
elseif (Convert.ToInt32(Data_Day_Tb.Text) <= 9)
{
if (Data_Day_Tb.Text.Length == 2)
{
Data_Day_Tb.Text = Data_Day_Tb.Text.Replace("0", "");
Data_Day_Tb.Text = "0" + Data_Day_Tb.Text;
}
else
{
Data_Day_Tb.Text = "0" + Data_Day_Tb.Text;
}
}

لطفا راهنمایی بفرمایید
با تشکر مجدد

sinpin
پنج شنبه 06 دی 1386, 16:20 عصر
با تشکر از دوستان
من از کد sinpin (http://barnamenevis.org/forum/member.php?u=6235) استفاده کردم اما زمانی که فرم لود میشه اصلا رو تکس باکس ها Select نمیشه و به کنترل ها بعدی منتقل میشه.

من این کد رو روی سیستم خودم نوشتم و اجرا کردم و مشکلی نداشت، لطفا مشکلتون رو دقیقتر توضیح بدید.