سلام!
چطور میشه با استفاده از یک تکست باکس،داخل یه کمبو باکس جستجو کرد و مقدار مورد جستجو رو در کمبو باکس انتخاب کرد!
با تشکر!
سلام!
چطور میشه با استفاده از یک تکست باکس،داخل یه کمبو باکس جستجو کرد و مقدار مورد جستجو رو در کمبو باکس انتخاب کرد!
با تشکر!
ComboBox1.SelectedIndex= ComboBox1.FindStringExact("whatYouWantToSearch");
ممنون از پاسختون!
ولی بنده منظورم این نبود!
فکوس وقتی وارد تکست باکس میشه و اولین کلمه تایپ میشه،کمبو باکس باز میشه (تو اونت change تکست باکس قابلیت DroppedDown کمبو رو True کردم)و شروع میکنه به جستجو:
بصورتی که کلمه به کلمه سرچ میکنه و عملیات فیلترینک روش انجام میشه!
مثلا فرض کنید زدم Z فقط اونایی رو نمایش بده که با کلمه Z شروع میشن و بقیه رو فیلتر کنه!
و اونی که اول لیست هست رو انتخاب کنه!
منظور شما این طور است
private void textBox1_TextChanged(object sender, EventArgs e)
{
if (textBox1.Text == "")
{
comboBox1.SelectedIndex = -1;
comboBox1.DroppedDown = false ;
}
else
{
comboBox1.SelectedIndex = comboBox1.FindString(textBox1.Text);
comboBox1.DroppedDown = true;
}
}
ممنونم!
تقریبا نزدیک شدیم!
درسته همینجوریه ولی اگر موقعی که داده موجود بود بقیه را فیلتر کند(بقیه لیست را نمایش ندهد)بهتره!البته اگر نشد هم مهم نیست!
ولی مهم اینه که کلید Enter عمل کنه و اون مقدار جستجو شده را انتخاب کنه!
یعنی با اینتر بشه مقدار یافت شده رو انتخاب کرد!
بازهم از پاسختون ممنونم!
private void textBox1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyData != Keys.Up && e.KeyData != Keys.Down && e.KeyData != Keys.Enter) return;
if (e.KeyData == Keys.Down)
{
comboBox1.DroppedDown = true;
comboBox1.SelectedIndex = comboBox1.Items.Count > comboBox1.SelectedIndex + 1
? comboBox1.SelectedIndex + 1
: comboBox1.SelectedIndex;
}
else if (e.KeyData == Keys.Up)
{
comboBox1.DroppedDown = true;
comboBox1.SelectedIndex = comboBox1.SelectedIndex - 1 > -1
? comboBox1.SelectedIndex - 1
: comboBox1.SelectedIndex;
}
else if (e.KeyData == Keys.Enter)
{
comboBox1.DroppedDown = false;
}
}
توی اونت keydown تکست باکس فلش بالا و پایین و اینتر را فعال کردم !(چون وقتی کمبو باکس dropdown میشه،نشانگر موس ناپدید میشه)و با استفاده از کلید بالا و پایین میشه مورد جستجو را انتخاب کرد!
با کلید اینتر هم گفتم که droppeddown=false بشه،تا کلمه مورد نظر انتخاب بشه!
ولی حالا یه مشکلی هست:بعضی از آیتمها رو که با اینتر انتخاب میکنم،انتخاب نمیشه و یکی دیگه از آیتمها(مخصوصا اولیه)انتخاب میشه!
آیا راهی نیست که مابقی آیتمهای کمبو که کلمه موردجستجو را دارا نیستند فیلتر شوند؟
آیا میشه واسه نشانگر موس کاری کرد که پیدا باشه؟
سلام
این رو امتحان کن برای اینتر کردن
private void textBox1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
MessageBox.Show(comboBox1.SelectedItem.ToString()) ;
}
آخرین ویرایش به وسیله alexmcse : جمعه 17 خرداد 1392 در 12:20 عصر
سلام من متوجه نشدم شما مثلا یه لیست زیادی توی کمبو دارید
بعد می خواید متنی که داخل تکست می نویسید توی کمبو سرچ بشه ؟
بقیه گزینه های داخل کمبو دیده نشه اصلا ؟
اگه اینطوره که باید اولا یا کمبو رو به منبع داده خودتون که احتمال بانک اطلاعاتی بایند کنید و بعد با دستورات اس کیو ال select کنید
و یا اینکه بایند نکنید و هر بار که سرچ می کنید با select لیست کمبو رو clear کنید و بعد دوباره موارد جدید رو بهش اضافه کنید
اوکی ؟
اولین ایتم پیدا شده رو در کمبو نشان می دهد
System.Collections.ArrayList arr = new System.Collections.ArrayList();
private void textBox2_TextChanged(object sender, EventArgs e)
{
int n = comboBox2.FindString(textBox2.Text);
comboBox2.SelectedIndex = n;
arr.Add(comboBox2.Items[n].ToString());
comboBox2.Items.Clear();
comboBox2.DataSource = arr;
}
راستش من لینک زیاد کار نکردم اما اگر شما حاصل جستجو رو با دستور لینک بیرون کشیدین می تونین با دستور زیر دونه دونه موارد حاصل جستجو رو به لیست خودتون اضافه کنید.
comboBox1.Items.Clear();
for (int i = 0; i < تعداد رکوردهای حاصل; i++)
comboBox1.Items.Add("گزینه مورد نظر");
comboBox1.SelectedIndex = 0;
}
مشکلی با بایند کردن و جستجو و اینا ندارم!
تمام آیتمها هم به درستی داخل کمبو قرار گرفتن!جستجو بدرستی انجام میشه!(البته علت زدن این تاپیک هم همین بوده که ببینم بدون استفاده از بایند کردن و دستورات Sql میشه داخل کمبو باکس جستجو کرد؟)
الان تنها مشکل و بزگترین مشکل اینه که اگه با فلش بالا و پایین ،یک آیتم را در کمبو باکس انتخاب کنم،کمبو باکس میره اولین آیتم در کمبو رو انتخاب مبکنه!
واسه این مسکل راهی دارید عایا؟؟؟
لیست رو فیلتر میکند
private void button1_Click(object sender, EventArgs e)
{
for (int i = 0; i < comboBox2.Items.Count ; i++)
{
var q = comboBox2.Items[i].ToString().Select(p => p.ToString() ==textBox2.Text );
foreach (var item in q)
{
if (item)
arr.Add(comboBox2.Items[i]);
else
break;
}
}
comboBox2.Items.Clear();
comboBox2.DataSource = arr;
}