PDA

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



sara_t
شنبه 19 فروردین 1391, 15:45 عصر
سلام دوستان

من میخام فوکوس رو از یک تکست باکس به تکسک باکس بعدی ببرم منتها به جای تب از اینتر استفاده کنم.

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

if (e.KeyCode == Keys.Enter) {
e.Handled = true;
SendKeys.Send("{TAB}");
}



textbox1.focuse();
textbox1.select();

programerinfonet
شنبه 19 فروردین 1391, 15:58 عصر
پیشنهاد می کنم از کامپونت های آماده استفاده کن

85394

amirrr3
شنبه 19 فروردین 1391, 16:06 عصر
دوست عزیز شما می تونی از این کامپوننت استفاده کنی غیر از چیزایی که خودت گفتی امکانات زیاده دیگه ای هم داره
موفق باشی
http://www.csharpdotnet.blogsky.com/category/cat-4/page/2/

r_s1389@yahoo.com
شنبه 19 فروردین 1391, 23:07 عصر
دوست عزیز میتونی از کامپوننت dotnetbar هم استفاده کنی
اگر پیدا نکردی ایمیل خودت را بگو تا برات ارسال کنم

esiprogrammer
یک شنبه 20 فروردین 1391, 00:36 صبح
اگه نمی خوای از کامپوننت استفاده کنی خودتم می تونی کد بنویسی


private void textBox1_Enter(object sender, EventArgs e)

{

textBox1.BackColor =

Color.Yellow;

}



private void textBox1_Leave(object sender, EventArgs e)

{

textBox1.BackColor =

Color.White;

}

rezano
یک شنبه 20 فروردین 1391, 00:49 صبح
private void textBox1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
textBox2.Focus();
}

رافعی مهدی
یک شنبه 20 فروردین 1391, 09:17 صبح
سلام
اکیداً پیشنهاد میکنم تا اونجا که امکان داره و کدنویسی بیش از حد وقت گیر نیست براتون، از کامپوننتهای آماده استفاده نکنید، مگه اینکه واقعاً ضرورت داشته باشه.

پاسخ سوال شما: وقتی تکست باکس شما فوکس به خودش گرفت، از متد SelectAll اون تکست باکس استفاده کنید، همین!!!

___________________________________
توضیحات بیشتر:
برای با خبر شدن از اینکه یک کنترل فوکس به خودش گرفته یا نه، باید از رویدادهای GotFocus و LostFocus استفاده کرد. برای این کار داریم:


public Form1()
{
InitializeComponent();

textBox1.GotFocus += new EventHandler(textBox1_GotFocus);
}

void textBox1_GotFocus(object sender, EventArgs e)
{
textBox1.SelectAll();
}

این کار رو به شکل ضمنی و ساده تری هم میشه انجام داد:


public Form1()
{
InitializeComponent();

textBox1.GotFocus += (sender, e) =>
{
textBox1.SelectAll();
};
}

و اگر میخواهید این کار رو برای تمام تکست باکس های روی فرم انجام بدید:


public Form1()
{
InitializeComponent();

RegisterGotFocusForAllTextBoxes();
}

private void RegisterGotFocusForAllTextBoxes()
{
foreach (Control control in this.Controls)
{
if (control.HasChildren)
{
RegisterGotFocusForAllTextBoxes();
}
else if (control is TextBox)
{
control.GotFocus += (sender, e) =>
{
(control as TextBox).SelectAll();
};
}
}
}

sara_t
یک شنبه 20 فروردین 1391, 15:24 عصر
میشه توضیح بدید اشکال کامپوننت های اماده چی هست؟

با کد شما من مجبور هستم برای تمام تکس باکس ها اینکار رو انجام بدم؟

رافعی مهدی
یک شنبه 20 فروردین 1391, 16:03 عصر
- به خاطر اینکه کامپوننتهای آماده رو نمیشه Debug کرد و احتمالاً اگر به Customize کردن اونها احتیاج داشته باشید، این کار غیر ممکن میشه. اگر شما یک مکانیک حرفه ای باشید، آیا حاضر میشید از گیربکسی استفاده کنید که نمیتونید بازش کنید، هرچند که بدونید اون گیربکس ساخت یک شرکت خوبه؟ اگر در پاسخ به این سوال میگید آره، پس از کامپوننتهای آماده هم استفاده کنید.

- نه، همونطور که در انتهای پاسخ قبلی نوشتم، با اجرای متد RegisterGotFocusForAllTextBoxes همه تکست باکس های روی فرم این کار رو انجام خواهند داد و دیگر نیازی به نوشتن کد برای تک تک اونها نیست.