PDA

View Full Version : AutoComplete کردن textbox



mandanim
دوشنبه 06 شهریور 1391, 18:37 عصر
سلام دوستان
یک مشکل ساده ولی ...
من از خاصیت AutoComplete استفاده کردم در textbox
بعنوان مثال یک آرایه داریم از عناصر AB015 , AD088 , AC079 , AF089 , AQ020 , AE , ...
حالا می خواهم با زدن دکمه Space یکبار دیگر عناصر من AutoCompleteبشوند

اگه مینوتید کمکم کنید که همین قسمت برنامم مونده تا تحویل بدم
د.نبالش گشتم ولی پیدا نکردم.
هدفم کمک در تایپ به کاربر می باشد
یه چیزی تو مایه های خود visual studio
فقط با خود textbox بدون استفاده از Listbox ممنون

shocraneh
سه شنبه 07 شهریور 1391, 06:19 صبح
سلام اگه عناصرتون ثابت هستند میتونی از AutoComplete استفاده کنی در غیراینصورت از ایونت text change تکس استفاده کنی (با استفاده از دستور سلکت و like) سرچ کنید نمونش زیاده.موفق باشید

h_assefi
سه شنبه 07 شهریور 1391, 08:50 صبح
سلام
به لینکهای زیر یه سری بزن حتما کمکت میکنه
http://www.codeproject.com/Articles/16942/AutoComplete-TextBox
http://www.c-sharpcorner.com/UploadFile/mahesh/AutoCompletion02012006113508AM/AutoCompletion.aspx
http://www.dotnetfunda.com/articles/article225.aspx

mandanim
سه شنبه 07 شهریور 1391, 16:30 عصر
ممنونم از راهنمائیتون ولی مثل اینکه من بد توضیح دادم . شرمنده
من تایپ میکنم عل و بعد بین لیست های که عل توش بود علی رو انتخاب می کنم.و بعد space رو می زنم هنوز از textbox خارج نشدم و دارم تایپ می کنم و بعد تایپ میکنم مح بازم براک ATUOCOMMPLET بشه
فقط برای کلمه اولی نباشه
و برای هر SPACE یک AUTOCOMMPLET انجام بشه
روشهای که شما فرمودید من زیرو رو کردم
من از LISTBOX نمی تونم استفاده کنم خارج شدن از textbox به منزله leave شدن اونه
برای هر کلمه یک AUTOCOMMPLET
بازم ممنونم
من عناصرم رو از بانک می خونم

harani
سه شنبه 07 شهریور 1391, 16:44 عصر
من برای کامبو باکس یه همچین چیزی نوشتم امیدوارم کمکتون بکنه : CmbOstan همان کنترل کامبو باکس


public int countWord_ostan;//z
private void Cmb_Ostan_TextChanged(object sender, EventArgs e)//a

{

foreach (String str in Cmb_Ostan.Items)//a
{

if (str.StartsWith(Cmb_Ostan.Text))//b
{
Cmb_Ostan.Text = str;//c

}

}
Cmb_Ostan.Select(countWord_ostan, Cmb_Ostan.Text.Length - 1);//d


}
private void Cmb_Ostan_KeyDown(object sender, KeyEventArgs e)//e
{
countWord_ostan++;//f
if (e.KeyCode == Keys.Up || e.KeyCode == Keys.Down) countWord_ostan = 0;//g

}
private void Cmb_Ostan_MouseDown(object sender, MouseEventArgs e)//f
{
countWord_ostan = 0;//h
Cmb_Ostan.SelectAll();//k
}

mandanim
سه شنبه 07 شهریور 1391, 16:58 عصر
ممنون از راهنمای . اینکه فقط رو اولی کار می کنه و این کاری که شما انجام دادید خیلی ساده تر میشه انجام داد .
به هیچ عنوان منظور من این نیست
اگه کسی بتونه کمکم کنه ممنون میشم
http://upload.weblogbartar.com/images/ww22zz9b64rbyqwtjw.jpg

Mahmoud.Afrad
سه شنبه 07 شهریور 1391, 19:35 عصر
از کمبوباکس میتونید استفاده کنید. چیزی شبیه کدهای زیر (البته با کلیک موس نمیدونم چرا جواب نمیده ولی با کلیدهای جهت نما انتخاب کنید)
StringBuilder strbLastWord = new StringBuilder();
StringBuilder strbOldText = new StringBuilder();
SqlDataReader sqldr;
private void comboBox1_TextUpdate(object sender, EventArgs e)
{
strbLastWord.Remove(0, strbLastWord.Length);
strbLastWord.Append(comboBox1.Text.Split(' ').Where(w => w != string.Empty && w != null).LastOrDefault());

if (strbLastWord != null)
{
cmd = new SqlCommand("select name from tbl where name like N'" + strbLastWord.ToString() + "%'", con);

comboBox1.Items.Clear();

try
{
if (con.State != ConnectionState.Open)
con.Open();
sqldr = cmd.ExecuteReader();

while (sqldr.Read())
{
comboBox1.Items.Add(sqldr["name"].ToString());
}
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
finally
{
if (con.State != ConnectionState.Closed)
con.Close();
}
}

comboBox1.Select(comboBox1.Text.Length, 0);
comboBox1.DroppedDown = true;

strbOldText.Remove(0, strbOldText.Length);
strbOldText.Append(comboBox1.Text);
}
private void comboBox1_DropDownClosed(object sender, EventArgs e)
{
if (comboBox1.SelectedItem != null)
{
strbOldText.Remove(strbOldText.Length - strbLastWord.Length, strbLastWord.Length);
strbOldText.Append(comboBox1.SelectedItem.ToString ());
comboBox1.Items.Clear();
comboBox1.Text = strbOldText.ToString();

comboBox1.Select(comboBox1.Text.Length, 0);
}
}

mandanim
چهارشنبه 08 شهریور 1391, 01:15 صبح
ممنونم.
این کار شاید درست باشه ولی به هیچ عنوان زیبایی و کارایی آنچنانی نداره
با انتخاب گزینه بعدی نوشته قبلیش پاک میشه.
من هم می خوام با صفحه کلید انتخاب کنه
اگه دوستان دیگری بتونن این موضوع رو حل کنن ممنون می شم
خیلی ممنونم دوست عزیز

shocraneh
چهارشنبه 08 شهریور 1391, 11:25 صبح
سلام اگه منظورتون اینه که مثلا شما تو آرایه داره علی - علی رضا - علی محمد- علی فتحی- علی فتحی نیا ) و حالا منظورت انتخاب علی فتحی نیا است ،شما باید دستی لااقل تا علی فتحی خودت بدون زدن space تایپ کنی .این کاریه که همه انجام میدن (به نظر من چیزی که شما دنبالشی معقول نیست)

mandanim
چهارشنبه 08 شهریور 1391, 11:35 صبح
شما 10000000 فیلد داری .
داری تایپ میکنی .
با زدن space کلمه بعدی رو تایپ می کنی.
هر چیزی دوست داشتی تایپ کن .
ولی این textbox در هز spaceکمکت میکنه
چندتا فیلد دارم مثلا
چوب
ساغر
غلامعلی
میلگرد
اسپری
رادیو
نگهبانی
و ....
حالا دارای تایپ میکنی
به هیچ عنوان نمی تونی بگی بعد از space چه کلمه تایپ میشه مگر اینکه تایپ کنی
کلمه بعدی به قبلی هیچ ربطی نداره
من یهevent textbox برای datagridview تو EditingControlShowingگذاشتم
امیدوارم منظورم رسونده باشم دوست من
بعد از space باز هم AutoCommplete شه
متنهای قبلی به هیچ عنوان تغییر نکنه و به متن قبلی اضافه شه
و....

shocraneh
چهارشنبه 08 شهریور 1391, 11:48 صبح
من متوجه نظورتون شدم . حرف من اینه که کسی این کارو انجام نمیده . شما می تونی یه سرچ کارکتری با like برای تکست بزاری که نتیجه کوئری رو تو گرید برات نشون بده و با زدن هر کاراکتر محدودیت نمایش گرید عوض بشه

mandanim
چهارشنبه 08 شهریور 1391, 14:47 عصر
ممنون از زمانیکه برای این موضوع گذاشتی
ما کاراکترهای مشابه هم زیاد داریم
مثل : ماتریال ٰ ماتریالیسم ٰ ماتریان ٰ ماتریانوس و ...
حالابا این شرایط طرف باید تا ته اش تایپ کنه تا به منظورش برسه و چه کاری AUTOCOMMPLET رو استفاده کنه
اگه بخواد بره کلیک کنه تا انتخاب شه از گرید ویو دیگه ROW VALIDETED میشه و اصلا مناسب نیست
یه textbox فقط یه کلمه نداره ممکنه هزار و یک کلمه داشته باشه
قراره تو همون جا با قابلیتش این کارو بکنه
من پیدا نکردم راحه حشو . ولی میدونم یه راه داره
لطفا اگه کسی می دونه جواب بده ممنون

aminaltavista
چهارشنبه 08 شهریور 1391, 17:30 عصر
چرا نمیگی مثل خود سی شارپ که هرچی تایپ کنی معادلش یا خودش میاد یا مثل فایر فکس!

دوات پیش خودمه ! ببین از مرز گذشتست (اخراجی ها):قهقهه:

دوست عزیز این موردی رو که میگید تو یه کامپوننت به نام rad textbox وجود داره! که تو خاصیت هاش هست . اما باید اول مجموعش رو نصب کنید تا بتونید از تمامی امکانات این مجموعه کامپوننت بی نظیر استفاده کنید. البته میتونید جداگونه refrence بدید.که به میل خودتون بستگی داره!

اگه دوست دارید میتونید برام میل بزنید تا این کامپوننت رو براتون بفرستم.

موفق باشید.