PDA

View Full Version : سوال: تبدیل اینتر به تب



mehrshadms
دوشنبه 14 مرداد 1392, 09:38 صبح
سلام یه کدی می خوام بذارم تو فرم وقتی کنترل جاری فرم تکست باکس هست با زدن اینتر عمل تب زدن انجام بشه

amir200h
دوشنبه 14 مرداد 1392, 09:45 صبح
توی رویداد KeyDown نکست باکست کد زیر بزار
if (e.KeyCode == Keys.Enter) SendKeys.Send("{TAB}");
یا
if (e.KeyCode == Keys.Enter) { TextBox2.Focus(); }

mehrshadms
دوشنبه 14 مرداد 1392, 09:49 صبح
امیر جان ممنون ازلطفت
کد اول کار نمی کنه

کد دو هم غلطه (شی گرا نیست) اگه اس تکست باکس یا جاش عوض بشه کلا همه میریزه بهم ( 20 تا تکست هست رو فرم)

amir200h
دوشنبه 14 مرداد 1392, 09:54 صبح
اینو جناب khokhan بهم دادن. ولی خودم ازش استفاده نکردم :لبخند:
این چند خط رو عینا توی فرمت قرار می دی وبرای همیشه خیالت راحت می شه
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
if ((msg.WParam.ToInt32() == 13))
{
SendKeys.Send("{Tab}");
return true;
}
return base.ProcessCmdKey(ref msg, keyData);
}

mehrshadms
دوشنبه 14 مرداد 1392, 10:00 صبح
:لبخند: نشد

mehrshadms
دوشنبه 14 مرداد 1392, 10:24 صبح
کسی نیست کمک کنه ؟

amir200h
دوشنبه 14 مرداد 1392, 10:29 صبح
چرا میشه. کد رو ایجوری بزار
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
if ((msg.WParam.ToInt32() == 13))
{
SendKeys.Send("{Tab}");
return true;
}
return base.ProcessCmdKey(ref msg, keyData);
}

mehrshadms
دوشنبه 14 مرداد 1392, 10:44 صبح
شد :لبخند: یه سوال دیگه تو if چی بنویسم که این کد رو باتن اجرا نشه ؟

mehrshadms
دوشنبه 14 مرداد 1392, 11:51 صبح
این یه تیکه رو یکی کمک کنه گیر کردم

amir200h
دوشنبه 14 مرداد 1392, 11:56 صبح
باید TabStop باتن هاتو false کنی

mthreat.info
دوشنبه 14 مرداد 1392, 13:01 عصر
البته درستترش فکر کنم این بشه!!!


protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
foreach (var item in Controls)
{
if (item is TextBox && (item as TextBox).Focused)
{
if ((msg.WParam.ToInt32() == 13))
{
SendKeys.Send("{Tab}");
return true;
}
}
}
return base.ProcessCmdKey(ref msg, keyData);
}

danialafshari
دوشنبه 14 مرداد 1392, 14:15 عصر
البته درستترش فکر کنم این بشه!!!


protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
foreach (var item in Controls)
{
if (item is TextBox && (item as TextBox).Focused)
{
if ((msg.WParam.ToInt32() == 13))
{
SendKeys.Send("{Tab}");
return true;
}
}
}
return base.ProcessCmdKey(ref msg, keyData);
}


سلام
به نظر من اصولی تره که به جای قرار دادن یه شرط دیگه،همونطور که دوستمون گفت tab stop رو تنظیم کنیم
البته همه چیز بستگی به سلیقه طراح داره، ممکنه chekBox و... هم بزاره که نخواد tab رو stop کنه
موفق باشید

Amin69
دوشنبه 14 مرداد 1392, 14:17 عصر
سلام. توی خاصیت keyDown هر تکست باکس بنویس:

if (e.KeyCode == Keys.Enter)
this.ProcessTabKey(true);

mehrshadms
سه شنبه 15 مرداد 1392, 13:03 عصر
این کد رو گذاشتم درسته کار می کنه فقط می خوام واسه یک تکست باکس کار نکنه (tab stop = false )نشه یه کد دیگه می خوام :

protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
foreach (var item in Controls)
{
if (item is TextBox && (item as TextBox).Focused)
{
if ((msg.WParam.ToInt32() == 13))
{
SendKeys.Send("{Tab}");
return true;
}
}
}
return base.ProcessCmdKey(ref msg, keyData);
}

mehrshadms
سه شنبه 15 مرداد 1392, 14:13 عصر
یکی کمک کنه این کد در بیاد پوستم کنده شد:عصبانی++:

danialafshari
سه شنبه 15 مرداد 1392, 14:29 عصر
یکی کمک کنه این کد در بیاد پوستم کنده شد:عصبانی++:

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

mehrshadms
چهارشنبه 16 مرداد 1392, 10:06 صبح
چیزیپیدا نکردم حالا شما این سری کمک کن سری بعدی خودم درست می کنم فقط یه تکست باکس این کد توش کار نکنه

mthreat.info
چهارشنبه 16 مرداد 1392, 12:06 عصر
البته درستترش فکر کنم این بشه!!!


protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
foreach (var item in Controls)
{
if (item is TextBox && (item as TextBox).Focused)
{
if ((msg.WParam.ToInt32() == 13))
{
SendKeys.Send("{Tab}");
return true;
}
}
}
return base.ProcessCmdKey(ref msg, keyData);
}


سلام
به نظر من اصولی تره که به جای قرار دادن یه شرط دیگه،همونطور که دوستمون گفت tab stop رو تنظیم کنیم
البته همه چیز بستگی به سلیقه طراح داره، ممکنه chekBox و... هم بزاره که نخواد tab رو stop کنه
موفق باشید
تو اتوماسیون های اداری و ... طرف کمتر میاد از موس استفاده کنه همش یا enter میزنه یا اعداد یا... حتی کم پیش میاد که از tab استفاده کنه به نظر من به جای این جنگولک بازی ها طرف اگه Order Tab کنه خیلی بهتره تا از enter استفاده کنه


یکی کمک کنه این کد در بیاد پوستم کنده شد:عصبانی++:



protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
foreach (var item in Controls)
{
if (item is TextBox && (item as TextBox).Focused && (item as TextBox).Name != "textBox1")
{
if ((msg.WParam.ToInt32() == 13))
{
SendKeys.Send("{Tab}");
return true;
}
}
}
return base.ProcessCmdKey(ref msg, keyData);
}

شما میتونی بجای Name از Text هم استفاده کنی یا tag یا ...

NasimBamdad
چهارشنبه 16 مرداد 1392, 14:04 عصر
خاصیت Key Preview فرمت رو True کن ، اون کد های بالا جواب میده . خودم استفاده کردم !

Sal_64
دوشنبه 27 آبان 1392, 15:17 عصر
اینو جناب khokhan بهم دادن. ولی خودم ازش استفاده نکردم :لبخند:
این چند خط رو عینا توی فرمت قرار می دی وبرای همیشه خیالت راحت می شه
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
if ((msg.WParam.ToInt32() == 13))
{
SendKeys.Send("{Tab}");
return true;
}
return base.ProcessCmdKey(ref msg, keyData);
}

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

hamid_hr
دوشنبه 27 آبان 1392, 15:46 عصر
داخل این قطعه کد چطور میشه متوجه شد که قراره فوکوس به کدوم کنترل منتقل شه؟
اين دقيقا كار تب رو ميكنه
شما با تب فوكوسش به هر جا بره با اينتر هم ميره

Sal_64
دوشنبه 27 آبان 1392, 17:04 عصر
اين دقيقا كار تب رو ميكنه
شما با تب فوكوسش به هر جا بره با اينتر هم ميره
متوجه این مطلب هستم
اما سوالم من اینه که الان با بررسی item میشه متوجه شد دقیقا فوکوس روی کدوم کنترل
حالا چطوری میشه متوجه شد که قراره فوکوس به کدوم کنترل منتقل شه ؟

امیدوارم توضیحاتم کافی بوده باشه


تشکر

hamid_hr
دوشنبه 27 آبان 1392, 17:49 عصر
بايد تب ايندكسا رو چك كني
مثلا الان تب ايندكس كنترلي كه فكوس داره 10 باشه ميره رو كنترلي كه tabindex اون 11 هستش
از اين طريق ميشه فهميد كدوم كنترل هستش

Sal_64
دوشنبه 27 آبان 1392, 19:35 عصر
بايد تب ايندكسا رو چك كني
مثلا الان تب ايندكس كنترلي كه فكوس داره 10 باشه ميره رو كنترلي كه tabindex اون 11 هستش
از اين طريق ميشه فهميد كدوم كنترل هستش

من به وسیله تابع GetNextControl در هر لحظه متوجه میشم که قراره فوکوس به کدوم کنترل منتقل شه ، اما مشکل زمانیه که قراره فوکوس از آخرین کنترل مجداد برگرده بیاد روی اولین کنترل (حالت سیکل)

Sal_64
سه شنبه 05 آذر 1392, 21:34 عصر
یه سوال

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

چه باید کرد ؟

تشکر