PDA

View Full Version : تایپ آسان در textbox



mandanim
یک شنبه 04 آبان 1393, 13:10 عصر
سلام
دوستان من یه textbox دارم و می خوام تکمیلش کنم
قراره توش تایپ کنم
تا اینجا که نیازی به مطرح کردن این تایپک نبود
ولی این texbox قراره به صورت خود ویژال استادیو عمل بکنه ولی نه با زدن . بلکه space
یعنی از بانک اطلاعاتی اگه وجود داشت بخونه و نوشته رو مشخص بکنه
با هر space بره سراغ بعدی
مثل تایپ اس ام اس
ممنون میشم کمکم کنید

jir_jir_jir
یک شنبه 04 آبان 1393, 21:04 عصر
توی رویداد keypress ، textbox مورد نظرت باید کد تابعی که برای دریافت اطلاعاتت از بانک هست رو فراخوانی کنی الباقیشم که کاری نداره کار با بانک

mandanim
یک شنبه 04 آبان 1393, 22:04 عصر
این روشی که میگی کاری نداره
ولی میشه یه مثال کوچیک برای این آرایه درست کنی

string[] elements = { "cat", "dog", "fish" };
من تایپ کردم d dog بیاد ولی og selectبمونه
اگه شروه کردم به تایپ کردن که هیچی og پاک بشه ولی اگه space رو زدم بره انتها و یک space اضافه بشه و منتظر بقیه متن بمونه
اگه تو بقیه نوشتم یکی از عناصر اون آرایه رو نوشتم همون کار بالا و ....
ممنون میشم کمکم کنید

pedram.11
یک شنبه 04 آبان 1393, 23:10 عصر
این روشی که میگی کاری نداره
ولی میشه یه مثال کوچیک برای این آرایه درست کنی

string[] elements = { "cat", "dog", "fish" };
من تایپ کردم d dog بیاد ولی og selectبمونه
اگه شروه کردم به تایپ کردن که هیچی og پاک بشه ولی اگه space رو زدم بره انتها و یک space اضافه بشه و منتظر بقیه متن بمونه
اگه تو بقیه نوشتم یکی از عناصر اون آرایه رو نوشتم همون کار بالا و ....
ممنون میشم کمکم کنید

سلام، بفرمائید

private void Form1_Load(object sender, EventArgs e)
{
this.textBox1.AutoCompleteCustomSource.AddRange(ne w string[] {"cat", "dog", "fish" });
this.textBox1.AutoCompleteMode = System.Windows.Forms.AutoCompleteMode.SuggestAppen d;
this.textBox1.AutoCompleteSource = System.Windows.Forms.AutoCompleteSource.CustomSour ce;
this.textBox1.KeyPress += textBox1_KeyPress;
}
void textBox1_KeyPress(object sender,KeyPressEventArgs e)
{
if (e.KeyChar == ' ')
{
textBox1.DeselectAll();
textBox1.Select(textBox1.Text.Length, 0);
e.Handled = false;
}
}




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

pedram.11
یک شنبه 04 آبان 1393, 23:52 عصر
سلام دوباره! دیدم حال نوشتن دارم یدونه آماده کردم:
124994
public class SmartTextBox : TextBox
{
public SmartTextBox()
{
this.TextChanged += SmartTextBox_TextChanged;
this.KeyPress += SmartTextBox_KeyPress;
}
bool Removed = false;
bool Editing = false;
void SmartTextBox_TextChanged(object sender, EventArgs e)
{
if (Editing || Removed)
return;
Editing = true;
int selctStart = this.SelectionStart;
int lastSpacePos = findLastSpacePosition();
string word = this.Text.Substring(lastSpacePos, selctStart - lastSpacePos);
if (word.Length > 0)
foreach (var src in this.AutoCompleteCustomSource)
{
string s = src.ToString();
if (s.StartsWith(word))
{
this.Text = this.Text.Insert(selctStart, s.Substring(word.Length));
this.Select(selctStart, s.Length - word.Length);
break;
}
}
Editing = false;
}
int findLastSpacePosition()
{
for (int i = this.SelectionStart - 1; i >= 0; i--)
if (this.Text[i] == ' ')
return i + 1;
return 0;
}
void SmartTextBox_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar == ' ')
{
this.Select(this.SelectionStart + this.SelectionLength, 0);
e.Handled = false;
}
Removed = (e.KeyChar == '\b');
}
}

پروژه هم اگه نیاز شد:

mandanim
دوشنبه 05 آبان 1393, 17:35 عصر
ممنون بابت همه کمکهاتون