PDA

View Full Version : سوال: جابجایی بین تکست باکس ها با فشردن کلیدهای + و -



pishraft
چهارشنبه 26 مهر 1391, 11:17 صبح
سلام
چطور میتونم برا اساس چینش تکست باکس ها (Tab Order) با فشردن کلید + کنترل به تکست باکس بعد بره و با فشرن - به تکست باکس قبل
میخوام این کار کلی باشه نه برا هرکدوم تک تک نوشته شه
ممنون میشم راهنمایی کنید

حسین شهریاری
چهارشنبه 26 مهر 1391, 11:31 صبح
1-شما باید اول بیای کنترل کنی ببینی شیئ فعال TextBox هست یا نه؟
2-بعدش بیان TabOrder اونا به دست بیاری
3-مقدار TabOrder را + 1 کنی

danialafshari
چهارشنبه 26 مهر 1391, 12:05 عصر
با اندکی دستکاری در این کد :(وقت نبود خودم کامل کنم)
private void textBox1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyValue == 107)
{
SendKeys.Send("{tab}");
}
}

Nima_kyan
چهارشنبه 26 مهر 1391, 12:07 عصر
سلام
چطور میتونم برا اساس چینش تکست باکس ها (Tab Order) با فشردن کلید + کنترل به تکست باکس بعد بره و با فشرن - به تکست باکس قبل
میخوام این کار کلی باشه نه برا هرکدوم تک تک نوشته شه
ممنون میشم راهنمایی کنید
سلام
میتوني از همچين كدي استفاده كني


private void textBox2_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Oemplus)
SendKeys.Send("{Tab}");
}

اين رو واسه رويداد KeyDown تمام تكست باكس ها مينويسيم

pishraft
چهارشنبه 26 مهر 1391, 12:19 عصر
دوستان من 50 تا تکست باکس دارم بخوام برای همه این کار رو انجام بدم که نمیشه
ضمنا من میخوام این کار رو برای همه فرم ها انجام بدم

pishraft
چهارشنبه 26 مهر 1391, 12:20 عصر
آقای شهریاری میشه بیشتر راهنمایی بفرمائید؟

morteza271
چهارشنبه 26 مهر 1391, 12:32 عصر
دوستان من 50 تا تکست باکس دارم بخوام برای همه این کار رو انجام بدم که نمیشه
ضمنا من میخوام این کار رو برای همه فرم ها انجام بدم
شما می تونید کنترل تکست باکس رو اور راید کنید و از کد دوستان استفاده کنید و در پروژتون از این تکست باکس جدید استفاده کنید تا اینکاری که میخواین انجام بشه!

pishraft
چهارشنبه 26 مهر 1391, 12:50 عصر
خب چطور این کار رو انجام بدم
میشه نموده کد بدید؟
ممنون میشم

حسین شهریاری
چهارشنبه 26 مهر 1391, 13:09 عصر
ببینید، این یه شبه کد هست، ازش نکته برداری کنید، من VS دم دستم نیست، کدها را هم حفظ نمیکنم:

for(i=0;i<this.controls.count;i++)
{
if (this.controls[i].ClassType=="TextBox")
{
if(e.keyValue=="+")
SendKeys.Send("{tab}");
}
}

میتونی توی رویداد KeyDown فرم بنویسین.

morteza271
چهارشنبه 26 مهر 1391, 13:13 عصر
در Solution Explorer بر روی پروژتون راست کلیک کنید و بعد Add و بعد Component... رو انتخاب کنید تا یه پنجره باز بشه.
در پنجره باز شده یه نام برای کامپوننت تون بذارین مثلا MyTextBox.cs بذارین و بعد Add رو بزنید.
حالا قسمت Design کامپوننت شما باز شده ولی شما به قسمت کد برین(می تونید با زدن F7 برین به قسمت کد)

در قسمت کد :
اول از همه این رو بذارین :
using System.Windows.Forms;

خط زیر رو پیدا کنید:
public partial class MyTextBox : Component
و به صورت زیر تغییر بدین :
public partial class MyTextBox : TextBox

با اینکار شما میگین که میخواین کامپوننت شما از TextBox ارث بری کنه.
تا حالا شما یه تکست باکس با تمام ویژگی های تکست باکس معمولی دارین!
قسمت اصلی کار اینجاس :

در اینجا باید تغییراتی که میخواین رو انجام بدین.
شما فعلا کدتون رو به صورت زیر تغییر بدین :
public partial class MyTextBox : TextBox
{
public MyTextBox()
{
InitializeComponent();
}

private void MyTextBox_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Oemplus)
SendKeys.Send("{Tab}");
}

public MyTextBox(IContainer container)
{
container.Add(this);

InitializeComponent();

this.KeyDown += new System.Windows.Forms.KeyEventHandler(MyTextBox_Key Down);
}
}

بعد یه بار پروژتون رو Build کنید و برین به قسمت دیزاین یکی از فرم هاتون و پنجره Toolbox رو باز کنید در قسمت بالای این پنجره می تونید کامپوننت خودتون رو ببینید و بر روی فرمتون بذارینش.

عجب!! این خودش شد یه آموزش!!! به به .....

موفق باشید

pishraft
چهارشنبه 26 مهر 1391, 14:44 عصر
ممنون واقعا عالی بود
فقط یه مشکلی هست
من میخوام که با فشردن + این اتفاق بیافته کار درست انجام میشه ولی + هم در تکست باکس درج ممیشه
اگه نخوام این حرف بیافته چیکار باید بکنم
واقعا از راهنماییاتون ممنونم

حسین شهریاری
چهارشنبه 26 مهر 1391, 14:55 عصر
توی رویداد KeyPress یه شرط بگزار، تا + و - را قبول نکنه.