前言
为何会突然写出这篇博客呢?还得从评教系统说起。在评教系统中有一处根据下拉组合框中的教师姓名来查询教师信息。当时在给学生添加课程的时候需要用到这功能。
如果要从下拉中选的话,由于全校的教师很多,看的眼花缭乱的,如果自己输入的话,一旦名字输入错误,教师信息也查不出。
记得当初在评教系统中,这块最头疼了,也挺耽误时间的,就在想能不能做成仿照网页似的,当输入关键字的时候,名字也能够模糊匹配呢。下面就是这一功能介绍。
窗体截图
源代码
public partial class Frm_Main : Form
{
public Frm_Main()
{
InitializeComponent();
}
private bool State = false;//定义一个全局变量标识
private void Frm_Main_Load(object sender, EventArgs e)
{
cbox_Url.Items.Add("http://www.mingribook.com/");//向ComboBox控件中添加网址“http://www.mingribook.com/”
cbox_Url.Items.Add("http://www.baidu.com/");//向ComboBox控件中添加网址“http://www.baidu.com/”
cbox_Url.Items.Add("http://www.sina.com.cn/");//向ComboBox控件中添加网址“http://www.sina.com.cn/”
cbox_Url.Items.Add("http://www.163.com/");//向ComboBox控件中添加网址“http://www.163.com/”
cbox_Url.Items.Add("http://www.qq.com/");//向ComboBox控件中添加网址“http://www.qq.com/”
}
private void cbox_Url_TextChanged(object sender, EventArgs e)
{
if (State)//当变量的值为真时
{
string importText = cbox_Url.Text;//获得输入的文本
int index = cbox_Url.FindString(importText);//在ComboBox集合中查找匹配的文本
if (index >= 0)//当有查找结果时
{
State = false;//关闭编辑状态
cbox_Url.SelectedIndex = index;//找到对应项
State = true;//打开编辑状态
cbox_Url.Select(importText.Length, cbox_Url.Text.Length);//设定文本的选择长度
}
}
}
private void cbox_Url_KeyDown(object sender, KeyEventArgs e)
{
State = (e.KeyCode != Keys.Back && e.KeyCode != Keys.Delete);//当按键既不是Back键又不是Delete键时
cbox_Url.DroppedDown = true;//当有按键被按下时显示下拉列表
}
}
关键技术
-
FindString方法
可以方便的查询数据项集合中指定的数据项的索引。
语法格式:
Publicint FindString(string s)
参数说明
-
s:将要搜索的字符串对象
-
返回值:返回整形数值,找到第一个项从零开始的索引,如果未找到匹配项则返回-1.
-
Select方法
可以选择ComboBox可编辑部分中的文本范围
语法格式
Publicvoid Select(int start,int length)
参数说明
-
start:整形数值,文本框中当前选定文本的第一个字符的位置。
-
length:整形数值,要选择的字符数。
小结:
以上就是用到的全部技术,虽然比不上百度关键字检索的高大上,但至少可以为我们提供一些便利。