PDA

View Full Version : نمایش مقادیر تکراری مربوط به یک textbox



z.gh_user
چهارشنبه 19 مرداد 1390, 10:42 صبح
سلام
چطور میشه برای یک textbox مثل نام خانوادگی در حین تایپ, مقادیری که قبلا وارد شده اند نشون داده بشن
مثلا همه فامیلی هایی که با "فا" شروع میشن یه جایی مثل پنل یا لیست باکس نمایش داده بشن و با انتخاب فامیل مورد نظر ,توی textbox قرار بگیره

Farshid007
چهارشنبه 19 مرداد 1390, 13:19 عصر
سلام
اینو بزار تو تکست باکس _تکست چنجینگ:
foreach (object obj in listBox1.Items)
{
if (obj.ToString().ToLower().StartsWith(textBox1.Text , true, System.Globalization.CultureInfo.InstalledUICultur e))
{
listBox1.SelectedIndex = listBox1.Items.IndexOf(obj);
break;

}
}

Farshid007
چهارشنبه 19 مرداد 1390, 13:21 عصر
و اینم بزار توی لیست باکس 1 _سلکتد ایندکس چنجینگ:
textBox1.Text = listBox1.Items
[listBox1.SelectedIndex].ToString();
textBox1.SelectAll();
البته اگه منظورتونو متوجه شده باشم

z.gh_user
چهارشنبه 19 مرداد 1390, 14:14 عصر
ممنون از راهنمایی تون
درواقع منظورم از این سوال اینه که کاربر مجبور نباشه فامیل هایی که زیاد تکرار میشن رو هربار بنویسه بلکه اول حرف هر فامیلی رو که زد, اگه قبلا مشابهش توی پایگاه داده ذخیره شده باشه ,بهش نشون بده
فکر میکنم باید یه select روی فیلد فامیل داشته باشیم و با like% مشابه هارو یه جایی نشون بدیم که دقیقا نمیدونم چطوری

z.gh_user
سه شنبه 05 مهر 1390, 13:47 عصر
برای اینکار باید از AutoCompleteStringCollection استفاده کرد به این صورت:


Public Sub repeat_name_n()
Dim MySource_n As New AutoCompleteStringCollection()
Dim dr3 As SqlClient.SqlDataReader
SqlCommand1.Connection = SqlConnection1
SqlCommand1.CommandText = "select name_p from patient"
dr3 = SqlCommand1.ExecuteReader()
If dr3.HasRows Then
While dr3.Read
MySource_n.Add(dr3("name_p").ToString)
End While
End If
txtNameB.AutoCompleteCustomSource = MySource_n
If dr3.IsClosed = False Then
dr3.Close()
End If
End Sub

و این زیربرنامه رو مثلا در form_load صدا کنیم.
دیگه اینکه برای textbox مورد نظر (در properties) تغییرات زیر رو اعمال کنیم:
autocompletemode=suggest
autocompletesource=CustomSource