|
分類:[C#]
いつも楽しく拝見させていただいております。
初めてネタふりをさせていただきます。
Windowsアプリケーションにてテキストボックスのインテリセンスっぽいものを作成してみました。
ダメ出しをお願いいたします。
デザインはtextBox1とlistBox1を配置いたします。
イベントはtextBox1_KeyDownとlistBox1_MouseDoubleClickとtextBox1_Clickになります。
以下、コードになります。
private void textBox1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode != Keys.Delete && e.KeyCode != Keys.Back)
{
listBox1.DataSource = null;
string baseText = textBox1.Text.Trim();
Keys key = e.KeyData;
baseText += key.ToString();
ArrayList arrChecked = arSearch(baseText);
listBox1.Visible = true;
listBox1.DataSource = arrChecked;
}
}
private ArrayList arSearch(string searchString)
{
ArrayList ar = new ArrayList();
// DBから情報を取得したり、定数で設定したり
string[] searched = {"aa","abb","aabbcc","aaaacccc","aaappp","aaapppll","apple","apear" };
foreach (string search in searched)
{
int counter = 0;
// 短い方に合わせる 問題ありか!?
if(searchString.Length < search.Length)
{
counter = searchString.Length;
}
else
{
counter = search.Length;
}
string target = search.Substring(0,counter);
string stBase = searchString.Substring(0, counter);
if (String.Compare(target,stBase, true) == 0)
{
ar.Add(search);
}
}
return ar;
}
private void listBox1_MouseDoubleClick(object sender, MouseEventArgs e)
{
textBox1.Text = listBox1.SelectedItem.ToString();
listBox1.Visible = false;
textBox1.Focus();
}
private void textBox1_Click(object sender, EventArgs e)
{
listBox1.Visible = false;
}
|