PDA

View Full Version : فوکوس با جهت پایین کیبورد



kamiloted
دوشنبه 26 مهر 1395, 11:24 صبح
سلام دوستان.

من یه دیتاگرید و یک تکست باکس برای جستجو در دیتاگرید رو فرمم دارم.
میخوام وقتی توی تکست باکس عبارت رو تایپ کردم برای جستجو و نتیجه جستجو 6 یا 7 مورد توی دیتاگرید نشون داد.
با جهت پایین کیبورد فوکوس رو ببرم تو دیتاگرید و اونجا محصول رو انتخاب کنم.
کدش چیه؟
ممنونم


private void txtSearch_KeyDown(object sender, KeyEventArgs e)
{
//if (e.KeyData == Keys.Down)
//{
// dataGridView1.Focus();
//}
//if (e.KeyCode == Keys.Down)
//{

//}
}

private void txtSearch_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar == (char)Keys.Down)
{
e.Handled = true;
dataGridView1.Focus();
}
}


اینا جواب نمیدن.

Saeed-CANcel
دوشنبه 26 مهر 1395, 13:13 عصر
واسه رویداد keyprees تکست تعریف کن ک هر وقت از صفحه کلید فلش پایین فشار داده شد فوکوس بره روی عنصر دگ از فرمت:چشمک:

mr.sirwan
دوشنبه 26 مهر 1395, 15:27 عصر
this.ActiveControl = dataGridView1;

mrprestige
دوشنبه 26 مهر 1395, 16:24 عصر
سلام دوست من ، این بخاطر اینه که رویدادی که برای اینکار انتخاب کردید اشتباه دوسته من ، شما باید توی رویداد PreviewKeyDown مربوط به textboxتون کد مربوطه رو بنویسید .

if (e.KeyData == Keys.Down)
{
dataGridView1.Select();
}


موفق و پیروز باشید .

kamiloted
دوشنبه 26 مهر 1395, 18:10 عصر
this.ActiveControl = dataGridView1;



ممنونم.کلا تو چه رویدادی نوشته بشه.
و من تو هر رویدادی که مینویسم.به محض تایپ یک حرف گرید ویو را فعال میکند.

kamiloted
دوشنبه 26 مهر 1395, 18:13 عصر
سلام دوست من ، این بخاطر اینه که رویدادی که برای اینکار انتخاب کردید اشتباه دوسته من ، شما باید توی رویداد PreviewKeyDown مربوط به textboxتون کد مربوطه رو بنویسید .

if (e.KeyData == Keys.Down)
{
dataGridView1.Select();
}


موفق و پیروز باشید .

ممنونم داداش.
باز فعال نمیکنه.
من توی خیلی از رویدادها گذاشتم.نمیشه.
حتی به جای Down کد اسکی 40 رو میزنم عمل نمیکنه.
حالا ما اگه بیایم به جای Down از اینتر استفاده کنیم.
با زدن اینتر فوکوس به روی دیتا گرید می افته. اما با دون نه.
ممنونم بیشتر راهنمایی کنید.

mr.sirwan
دوشنبه 26 مهر 1395, 18:52 عصر
ممنونم.کلا تو چه رویدادی نوشته بشه.
و من تو هر رویدادی که مینویسم.به محض تایپ یک حرف گرید ویو را فعال میکند.

فرقی نمیکنه، اصل کار شرطتونه، مثلا داخل رویداد KeyDown به این شکل استفاده کنین:

private void txtSearch_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Down)
{
this.ActiveControl = dataGridView1;
}
}

mrprestige
دوشنبه 26 مهر 1395, 20:03 عصر
!!!!! ببین این دستور رو اجرا کن ببین اصلا دکمه Down کار میکنه ؟

protected override bool ProcessCmdKey(ref Message PM, Keys keyD)
{
if (keyD == Keys.Down)
{
MessageBox.Show("رو زدید Down شما دکمه");
this.dataGridView1.Select();
return true;
}
return base.ProcessCmdKey(ref PM, keyD);
}

kamiloted
دوشنبه 26 مهر 1395, 23:38 عصر
!!!!! ببین این دستور رو اجرا کن ببین اصلا دکمه Down کار میکنه ؟

protected override bool ProcessCmdKey(ref Message PM, Keys keyD)
{
if (keyD == Keys.Down)
{
MessageBox.Show("رو زدید Down شما دکمه");
this.dataGridView1.Select();
return true;
}
return base.ProcessCmdKey(ref PM, keyD);
}


آره داداش کار میکنه

kamiloted
دوشنبه 26 مهر 1395, 23:39 عصر
فرقی نمیکنه، اصل کار شرطتونه، مثلا داخل رویداد KeyDown به این شکل استفاده کنین:

private void txtSearch_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Down)
{
this.ActiveControl = dataGridView1;
}
}




الان جواب نمیده.
ممنونم

daniyaltjm
سه شنبه 27 مهر 1395, 20:33 عصر
سلام، خوب با این کد هایی که دوستان دادن باید مشکلتون حل شده باشه!! مطمئن هستی که خاصیت KeyPreview فرمت برابر True هست؟ اگه اره خوب با این کدها باید کار کنه!!:متفکر:

private void radTextBoxSearch_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Down)
{
radGridView1.Select();
}

if (e.KeyValue == 40)
{
radGridView1.Select();
}
if (e.KeyData == Keys.Down)
{
radGridView1.Select();
}
}

kamiloted
سه شنبه 27 مهر 1395, 21:33 عصر
سلام، خوب با این کد هایی که دوستان دادن باید مشکلتون حل شده باشه!! مطمئن هستی که خاصیت KeyPreview فرمت برابر True هست؟ اگه اره خوب با این کدها باید کار کنه!!:متفکر:

private void radTextBoxSearch_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Down)
{
radGridView1.Select();
}

if (e.KeyValue == 40)
{
radGridView1.Select();
}
if (e.KeyData == Keys.Down)
{
radGridView1.Select();
}
}

ممنونم دوست عزیز.
خاصیت KeyPreview فرمم برابر True هست.
اما کار نمیکنه.کلافم کرده.
راهی نیست؟

kamiloted
سه شنبه 27 مهر 1395, 21:48 عصر
دوستان علتش رو فهمیدم.
چون تکست باکسم و دیتا گریدم روی پنل و گروپ باکس هستن.عمل نمیکنه.
اما همین کد ها رو روی یک فرم خالی بدون پنل گذاشتم کار کرد.
از هیچ کامپوننتی استفاده نمیکنم.
دوستان راه حل چیه ممنونم.

daniyaltjm
سه شنبه 27 مهر 1395, 22:16 عصر
private void Form1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Down)
{
dataGridView1.Focus();
}
}

kamiloted
سه شنبه 27 مهر 1395, 22:45 عصر
private void Form1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Down)
{
dataGridView1.Focus();
}
}

ممنونم.ولی باز عمل نمیکنه

daniyaltjm
سه شنبه 27 مهر 1395, 23:15 عصر
ممنونم.ولی باز عمل نمیکنه

امکان نداره!!

http://s9.picofile.com/file/8271378842/Acc.rar.html

kamiloted
چهارشنبه 28 مهر 1395, 00:43 صبح
دوستان مشکل از مولتی لاین بودن تکست باکس بود.ممنونم از همگی