انتخاب آیتم پیدا شده در AutoComplate توسط کلیدهای جهت نما
چطور میشه از AutoComplate در سی شارپ استفاده کرد؟ من از این روش استفاده میکنم
http://www.c-sharpcorner.com/blogs/a...l-c-sharp-2010
یکسری مشکلات دارم
1) حتما حروف اولش در سرچ باید باشه اگه حروف اولش در سرچ نباشه اون آیتم پیدا نمیشه؟ چرا؟ بصورت %Like% پیدا نمیکنه؟
2) بعد ازاینکه مقداری پیدا شد حتما باید با ماوس بر روی آن کلیک کردتا انتخاب شود با کلید های جهت نما روی مقادر پیدا شده رفته و کلید اینتر زده بشه اون تکست خالی میشه؟
3) من یکجای با ادغام (لیست باکس+تکس باکس) دیدم ایا این روش را کسی میدونه چطوری هست؟
2 ضمیمه
نقل قول: انتخاب آیتم پیدا شده در AutoComplate توسط کلیدهای جهت نما
با AutoComplate به نتیجه نمیرسی،
3
نقل قول:
) من یکجای با ادغام (لیست باکس+تکس باکس) دیدم ایا این روش را کسی میدونه چطوری هست؟
این روش خوبه حتی من با تکست باکس و دیتاگرید اینکارو کردم
ضمیمه 145665
اینم یه نمونه با لیست باکس
ضمیمه 145666
نقل قول: انتخاب آیتم پیدا شده در AutoComplate توسط کلیدهای جهت نما
نقل قول:
نوشته شده توسط
shahryari
با AutoComplate به نتیجه نمیرسی،
3
این روش خوبه حتی من با تکست باکس و دیتاگرید اینکارو کردم
ضمیمه 145665
اینم یه نمونه با لیست باکس
ضمیمه 145666
اگه ممکنه بگید چطور با لیست باکس اینکار را انجام باید بدم؟
تشکر
نقل قول: انتخاب آیتم پیدا شده در AutoComplate توسط کلیدهای جهت نما
مانند شکل یه لیست باکس بنداز زیر تکست ، لیست باکس رو پیشفرض hide کن
دیتا تیبلت رو بایند که لیست ویو
در رویداد تکست چنج تکست باکس جستجو رو بزن، و شرط بزار اکه دیتا تیبل خالی نبود، لیست باکس show بشه
در رویداد keyDown تکست باکس وقتی اینتر خورد، و لیست باکس هم hide نبود، روی لیست باکس فکوس بشه
در رویداد keyDown لیست باکس وقتی اینتر خورد و همچنین رویداد دابل کلیک ، متن انتخاب شده لیست باکس رو بگیر (هرکاری دلت میخاد بکن) و لیست باکس رو hideکن
SqlConnection conn;
SqlDataAdapter da;
private void Form1_Load(object sender, EventArgs e)
{
listBox1.Hide();
conn = new SqlConnection("server=.;database=test ; trusted_connection=true;");
da = new SqlDataAdapter("",conn);
}
private void textBox1_TextChanged(object sender, EventArgs e)
{
string sql = "select * from tbl1 where col1 like '%{0}%'";
sql = string.Format(sql, textBox1.Text);
da.SelectCommand.CommandText = sql;
DataTable dt = new DataTable();
da.Fill(dt);
listBox1.DisplayMember = "col1";
listBox1.DataSource = dt;
if (dt.Rows.Count > 0)
{
listBox1.Show();
}
else
{
listBox1.Hide();
}
}
private void textBox1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
if (listBox1.Visible)
{
listBox1.Focus();
}
}
}
private void listBox1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
textBox1.Text = listBox1.Text;
listBox1.Hide();
}
}
private void listBox1_DoubleClick(object sender, EventArgs e)
{
textBox1.Text = listBox1.Text;
listBox1.Hide();
}
در کدهای بالا به محض اینکه دوتا اینتر بزنی نتیجه کار رو میبینی
نقل قول: انتخاب آیتم پیدا شده در AutoComplate توسط کلیدهای جهت نما
تشکر مهندس عالی بود
من این تیکه کد را به برنامه تون اضافه کردم که کلیدهای جهت نما هم فوکس انجام بشه
private void textBox1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter || e.KeyCode==Keys.Down|| e.KeyCode==Keys.Up)
{
if (listBox1.Visible)
{
listBox1.Focus();
}
}
}
نقل قول: انتخاب آیتم پیدا شده در AutoComplate توسط کلیدهای جهت نما
نقل قول:
نوشته شده توسط
sg.programmer
تشکر مهندس عالی بود
من این تیکه کد را به برنامه تون اضافه کردم که کلیدهای جهت نما هم فوکس انجام بشه
private void textBox1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter || e.KeyCode==Keys.Down|| e.KeyCode==Keys.Up)
{
if (listBox1.Visible)
{
listBox1.Focus();
}
}
}
البته up اینجا به درد نمیخوره
میتونی یه کد جدا هم واسه Keys.Escape بنویسی، در صورت انصراف کاربر، لیست باکس hide بشه و امثالهم..
private void textBox1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter || e.KeyCode == Keys.Down )
{
if (listBox1.Visible)
{
listBox1.Focus();
}
}
if ( e.KeyCode == Keys.Escape )
{
listBox1.Hide();
}
}