PDA

View Full Version : کیبورد مجازی



spring87
دوشنبه 13 شهریور 1391, 09:18 صبح
سلام دوستان
من برنامه کیبورد مجازی را از اینترنت دانلود کردم، این برنامه یک تکست باکس داره و همه عملیات کیبورد روی همین تکست باکس انجام میشه
الان من این کیبورد رو کپی کردم روی یک فرمی که چند تا تکست باکس داره،میخوام کیبورد روی هر تکست باکسی که فعال شده عمل کنه یعنی وقتی توی تکست باکس 1 هستم و دکمه ای از کیبورد رو میزنم داخل اون تایپ بشه و وقتی میرم روی تکست باکس 2 و دکمه ای از کیبورد رو میزنم داخل این یکی تایپ بشه
کدهای کیبورد رو چطوری باید تغییر بدم؟

ehsan7007
دوشنبه 13 شهریور 1391, 09:47 صبح
متن هر باتن یکی از حروف الفباست کی می تونی اونرو به متن تکست باکست اضافه قرار بدی.

spring87
دوشنبه 13 شهریور 1391, 09:57 صبح
متن هر باتن یکی از حروف الفباست کی می تونی اونرو به متن تکست باکست اضافه قرار بدی.

مثل اینکه متوجه سوالم نشدین من حدود 10 تا تکست باکس دارم و میخوام موقع فعال شدن هرکدومشون وقتی رو دکمه کلیک میکنم متن دکمه توی اون تکست باکس خاص نوشته بشه

Mahmoud.Afrad
دوشنبه 13 شهریور 1391, 10:02 صبح
به این صورت عمل کن.
public Form1()
{
InitializeComponent();

foreach (Control control in this.Controls)
control.Leave += new EventHandler(control_Leave);
}
Control c;
void control_Leave(object sender, EventArgs e)
{
c = sender as Control;
}
private void btnAlphabet_Click(object sender, EventArgs e)
{
if (c is TextBox)
c.Text += (sender as Button).Text;
}
رویداد همه دکمه های کیبرد را روی btnAlphabet_Click تنظیم کن.

mohammadgoler
سه شنبه 14 شهریور 1391, 15:59 عصر
سلام من هم یه مشکلی شبیه به همین دارم ولی فرق میکنه ، من میخوام این کیبورد مجازی را در محیط web browser بر روی قسمتی از فرم اجرا کنم ( راسیتش دارم یه برنامه برای ارسال نظر بصورت خودکار در بلاگفا طراحی میکنم ولی باید این برنامه قادر باشه یک یا دو دکمه صفحه کلید را در قسمت متن اصلی فشار بده البته بصورت مجازی تا کد کپچا نمایش داده شود ) من از صفحه کلید ویندوز استفاده کردم جواب داد ولی داخل سی شارپ نمیدونم چه کدی باید بنویسم ، لطفا راهنماییم کنید

spring87
جمعه 28 مهر 1391, 21:22 عصر
به این صورت عمل کن.
public Form1()
{
InitializeComponent();

foreach (Control control in this.Controls)
control.Leave += new EventHandler(control_Leave);
}
Control c;
void control_Leave(object sender, EventArgs e)
{
c = sender as Control;
}
private void btnAlphabet_Click(object sender, EventArgs e)
{
if (c is TextBox)
c.Text += (sender as Button).Text;
}
رویداد همه دکمه های کیبرد را روی btnAlphabet_Click تنظیم کن.

سلام دوست عزيز
اين راه حل كه فرمودين جواب نميده، يعني بايد هر بار تكست باكسو انتخاب كني و بعد يه دكمه رو فشار بدي تا توي تكست باكس درج بشه. من ميخوام وقتي فوكوس روي تكست باكس اوله هر دكمه اي ميزنه توي همون تكست باكس نوشته بشه و بعد با اينتر بره توي تكست باكس بعدي و دكمه ها روي اين تكست باكس عمل كنه
راه حلي داره؟

Mahmoud.Afrad
شنبه 29 مهر 1391, 01:33 صبح
کافیه هر بار بعد از اضافه کردن تکست ، فوکوس را به تکست باکس برگردانید:

private void btnAlphabet_Click(object sender, EventArgs e)
{
if (c is TextBox)
{
TextBox txt = c as TextBox;
Button btn = sender as Button;
txt.AppendText(btn.Text);
txt.Focus();
}
}

roolinjax
شنبه 29 مهر 1391, 11:34 صبح
با سلام
من این کارو قبلا کردم توی وی بی 6
خیلی ساده است ، کافیه که کنترلهای تکس باکس رو بصورت آرایه کنترلی بسازی
بعد یه متغیر سراسری تعریف می کنی که توی این متغیر اندیس تکس باکس فعال رو نگهداری می کنی .
توی رویداد کلیک دکمه هم می نویسی که تکس باکس با اندیس اون متغیر بهش کاراکتر اضافه بشه.
خوبیه این روش اینه که برای رویداد فوکوس تکس باکس ها و کلیک دکمه ها کلا دو خط کد لازمه و مشکلی هم در افزایش تعداد هیچکدوم ندارین ، یعنی به راحتی میشه زیاد یا کم بشن.
موفق باشید

spring87
شنبه 06 آبان 1391, 13:51 عصر
کافیه هر بار بعد از اضافه کردن تکست ، فوکوس را به تکست باکس برگردانید:

private void btnAlphabet_Click(object sender, EventArgs e)
{
if (c is TextBox)
{
TextBox txt = c as TextBox;
Button btn = sender as Button;
txt.AppendText(btn.Text);
txt.Focus();
}
}


سلام مجدد
راستش من این برنامه کیبورد رو برای SmartDevice میخوام بنویسم و این راه حلی که شما فرمودین توی SmartDevice یه جاهاییش ارور میده --> ;(txt.AppendText(btn.Text و control.Leave += new EventHandler(control_Leave);
راه حلی هست که توی SmartDevice هم جواب بده؟

Mahmoud.Afrad
یک شنبه 07 آبان 1391, 21:30 عصر
خوب رویدادها رو از طریق پنجره event تنظیم کنید. برای اضافه کردن متن هم از الحاق رشته ها استفاده کنید. اصل روش کار بود که گفته شد.
این نمونه رو ببین(از طریق آرایه یا لیست هم میتونی که توی مثال هست):