上下按键寻找文本框中输入的匹配项

void txtDatumName_TextChanged(object sender, EventArgs e)
        {

            strDatumName = this.txtDatumName.Text.Trim();
            if (!string.IsNullOrEmpty(strDatumName))
            {
                foreach (ListViewItem item in this.datumCategoriesList.Items)
                {
                    if (item.SubItems[1].Text.Contains(strDatumName))
                    {
                        datumCategoriesList.Items[0].Selected = true;
                        item.Selected = true;
                        this.datumCategoriesList.EnsureVisible(item.Index);
                        break;
                    }
                    else
                    {
                        datumCategoriesList.SelectedItems.Clear();
                    }
                }
            }
            //文本框什么都不存在的时候就不会选中listview
            else
            {
                datumCategoriesList.SelectedItems.Clear();
            }
        }
this.txtDatumName.KeyDown+=txtDatumName_KeyDown;
//添加按向上向下箭头进行切换listview的事件
        private void txtDatumName_KeyDown(object sender, KeyEventArgs e)
        {
            //临时的listview对象
            ListViewItem itemCode = null;

            #region 文本框存在内容时才会执行
            if (e.KeyCode == Keys.Down)
            {
                if (itemCode != null)
                {
                    //循环去查找符合strDatumName内容要求的项,从临时的listview对象存储的这一项开始查找
                    for (int i = itemCode.Index; i < datumCategoriesList.Items.Count; i++)
                    {
                        //如果TXT文本框包含这一项
                        if (datumCategoriesList.Items[i].SubItems[1].Text.Contains(strDatumName))
                        {
                            //找距离当前一个最近的前一个项
                            if (datumCategoriesList.Items[i].Index > datumCategoriesList.SelectedItems[0].Index)
                            {
                                datumCategoriesList.Items[i].Selected = true;
                                this.datumCategoriesList.EnsureVisible(datumCategoriesList.Items[i].Index);
                                //当前选中行的值赋给一个临时的listview下次查找就从这个新的listview的位置开始查找
                                itemCode = datumCategoriesList.Items[datumCategoriesList.SelectedItems[0].Index];
                                break;
                            }
                        }
                        else
                        {
                            datumCategoriesList.Items[i].Selected = false;
                        }
                    }
                }
                else
                {
                    for (int i = 0; i < datumCategoriesList.Items.Count; i++)
                    {
                        if (datumCategoriesList.Items[i].SubItems[1].Text.Contains(strDatumName))
                        {
                            if (datumCategoriesList.Items[i].Index > datumCategoriesList.SelectedItems[0].Index)
                            {
                                datumCategoriesList.Items[i].Selected = true;
                                this.datumCategoriesList.EnsureVisible(datumCategoriesList.Items[i].Index);
                                //当前选中行的值赋给一个临时的listview下次查找就从这个新的listview的位置开始查找
                                itemCode = datumCategoriesList.Items[datumCategoriesList.SelectedItems[0].Index];
                                break;
                            }
                        }
                        else
                        {
                            datumCategoriesList.Items[i].Selected = false;
                        }
                    }
                }
            }
            else if (e.KeyCode == Keys.Up)
            {

                if (itemCode != null)
                {
                    for (int i = datumCategoriesList.Items.Count - 1; i >= itemCode.Index; i--)
                    {
                        //如果TXT文本框包含这一项
                        if (datumCategoriesList.Items[i].SubItems[1].Text.Contains(strDatumName))
                        {
                            //找距离当前一个最近的前一个项
                            if (datumCategoriesList.Items[i].Index < datumCategoriesList.SelectedItems[0].Index)
                            {
                                datumCategoriesList.Items[i].Selected = true;
                                this.datumCategoriesList.EnsureVisible(datumCategoriesList.Items[i].Index);
                                //当前选中行的值赋给一个临时的listview下次查找就从这个新的listview的位置开始查找
                                itemCode = datumCategoriesList.Items[datumCategoriesList.SelectedItems[0].Index];
                                break;
                            }
                        }
                        else
                        {
                            datumCategoriesList.Items[i].Selected = false;
                        }
                    }

                }
                else
                {
                    for (int i = datumCategoriesList.Items.Count - 1; i >= 0; i--)
                    {
                        //如果TXT文本框包含这一项
                        if (datumCategoriesList.Items[i].SubItems[1].Text.Contains(strDatumName))
                        {
                            //找距离当前一个最近的前一个项
                            if (datumCategoriesList.Items[i].Index < datumCategoriesList.SelectedItems[0].Index)
                            {
                                datumCategoriesList.Items[i].Selected = true;
                                this.datumCategoriesList.EnsureVisible(datumCategoriesList.Items[i].Index);
                                //当前选中行的值赋给一个临时的listview下次查找就从这个新的listview的位置开始查找
                                itemCode = datumCategoriesList.Items[datumCategoriesList.SelectedItems[0].Index];
                                break;
                            }
                        }
                        else
                        {
                            datumCategoriesList.Items[i].Selected = false;
                        }
                    }
                }
            }
            e.Handled = true;
            #endregion
        }

其中,datumCategoriesList.Items[i].SubItems[1].Text表示获取listview的选中行的值

时间: 2024-08-15 22:34:36

上下按键寻找文本框中输入的匹配项的相关文章

JavaScript实现在页面上的文本框中输入小写字母自动变为大写字母

<script language="javascript" type="text/javascript"> $(function () { $("input[type=text]").keyup(function () { $(this).val($(this).val().toUpperCase()); }); }); </script> $("input[type=text]") 处可为文本框ID,

JavaScript实现在文本框中输入空格时自动填写某个值

<script language="javascript" type="text/javascript"> var txtText4 = "#" + '<%= new DynamicControl(this, "Text4").ClientID%>'; $(function () { $(txtText4).keyup(function (e) { if (e.which == 32) $(this).

实现文本框中输入限制字数的效果

实现文本框中输入限制字数的效果: <!DOCTYPE html> <html> <head lang="zh"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta charset="utf-8" /> <title>采销商品基本信息</title> </head>

实现在矩形框中输入文字,可以显示剩余字数的功能

如下图: 要实现上面的功能,需要做到三点: 1.实现矩形框布局 思路就是矩形框作为整个布局的一个background,在drawable中创建一个shap.xml样式文件 <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android"     android:shape="r

对文本框中输入的内容放大显示和格式化

在最近做的项目中,发现用户在输入手机号.身份证或者银行卡这些重要的数据的时候,文本框显示的文字不是非常大,也不是非常明显的显示给用户. 往往这些重要数据用户都需要核对好几次,在确保正确无误的时候才敢点击保存,这样总会浪费一点时间,对用户的体验也不是非常友好,如果我们能在用户输入框的上面对输入的内容进行放大.颜色突出并且按照不同的分隔显示,是不是这样更能便于用户快速的核实数据呢. 于是自己利用业务时间就动手封装了一个小插件: 第一步:创建一个样式表sytle.css 1 @charset "utf

Tag It 一款 Jquery控件,当你在文本框中输入逗号时,自动帮你分隔开相关内容

Demo地址:http://webspirited.com/tagit/ 使用方法: 除了JQuery脚本外,下面的脚本也是必须的,这些脚本你都可以去GitHub下载:https://github.com/hailwood/jQuery-Tagit <link href="~/Content/jquery.tagit.css" rel="stylesheet" /><link href="~/Content/tagit.ui-zendes

文本框中输入极限

谁经常在一些网站注册,但是,也存在一些问题常常,让我们不要喂easy注册信息填写了很多很好的,然后点击提交,结果弹出一个对话框.告诉你的娜娜不正确.了非法字符,然后让你把写错的更改过来,这是好点的,不好的让你都又一次写一遍,还有的由于username已经被注冊,然后返回去让你又一次填写username,然后原来的某些信息也得又一次写一遍,这就特别烦人,我们可不能那么设计啊. 我认为最好的办法,是在用户输入的时候.通过文本的change事件,仅仅要输错了一个字符,就马上禁止继续输入.直到等到用户输

用js检测文本框中输入的是否符合条件并有错误和正确提醒

<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>捕获异常</title> </head> <script type="text/javascript"> function my_func(){ try{ x=document.getElementById("input_id").v

面试题之请写出用于校验 HTML 文本框中输入的内容全部为数字 的 javascript 代码

<input type="text" id="d1" onblur=" chkNumber(this)"/> <script type=”text/javascript” /> function chkNumber(eleText) { var value =eleText.value; var len =value.length; for(vari=0;i<len;i++) { if(value.charAt(i)