支持拼音检索的TextBox扩展控件-使用

我的上一个支持拼音检索的TextBox扩展控件,由于有些网友留言和发邮件问如何用,

如:菜鸟AAA等当时想到肯定大家都会用,就没上传示例程序。

原文为:http://www.cnblogs.com/whitewolf/archive/2009/12/03/1615975.html#1717373

既然有人问,那就上传下是下程序。肯定很多人都知道如何用,请越过就是,不要发弁言。

主要只有三个属性暴露出来:

1:MaxItemCout:这是在多个下拉条时,显示多少条可见;

2:SearchMode:检索方式:只提供了SearchMode.Contains 和SearchMode.StartWith包含和以其开始区别;

3:SpellSearchSource:检索的数据源,仅显现的中文等字符;

主要在它上:有几种方式设计:

1:设计时:

 

 


代码

2:代码中;
一般的:
//一般的CODE为;
            spellSearchBoxEx1.SpellSearchSource = new string[] { "中国", "中国fgdfs", "中阿收费的肌肤", "男生", "女生" };

3:数据库情况下,本实例用的是随机生成中文模拟数据库情况;
public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
           
            //一般的CODE为;
            spellSearchBoxEx1.SpellSearchSource = new string[] { "中国", "中国fgdfs", "中阿收费的肌肤", "男生", "女生" };

            // 连接数据库情况下仅此;
            spellSearchBoxExBySql.SpellSearchSource = GetSpellBoxSource(GetDataTable());
        }

        public string[] GetSpellBoxSource(DataTable dt)
        {
            List<string> list = new List<string>();
            foreach (DataRow dr in dt.Rows)
            {
                if (!Convert.IsDBNull(dr["Text"]))
                    list.Add(dr["Text"].ToString());
            }
            return list.ToArray();
        }
        public DataTable GetDataTable()
        {
            //这里是自己的代码连接数据库仅得到要填的列;
            //本方法没连数据库,用随机生成中文模拟获得DatatTable
            // DataTable dt = DB.GetDatatable("sql");
            DataTable dt = new DataTable();
            dt.Columns.Add(new DataColumn("Text", typeof(string)));
            Random rn = new Random();
            for (int i = 0; i < 50; i++)
            {
                string str ="中" +GetRandomChinese(rn.Next(8));
                DataRow dr = dt.NewRow();
                dr["Text"] = str;
                dt.Rows.Add(dr);
            }
            return dt;
        }

        #region 以下只是随机生成中文,与本控件使用无关;
        public string GetRandomChinese(int strlength)
        {
            Encoding gb = Encoding.GetEncoding("gb2312");

            object[] bytes = this.CreateRegionCode(strlength);

            StringBuilder sb = new StringBuilder();

            for (int i = 0; i < strlength; i++)
            {
                string temp = gb.GetString((byte[])Convert.ChangeType(bytes[i], typeof(byte[])));
                sb.Append(temp);
            }

            return sb.ToString();
        }
        private object[] CreateRegionCode(int strlength)
        {
            //定义一个字符串数组储存汉字编码的组成元素 
            string[] rBase = new String[16] { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f" };

            Random rnd = new Random();
            object[] bytes = new object[strlength];
            for (int i = 0; i < strlength; i++)
            {
                int r1 = rnd.Next(11, 14);
                string str_r1 = rBase[r1].Trim();
                rnd = new Random(r1 * unchecked((int)DateTime.Now.Ticks) + i);
                int r2;
                if (r1 == 13)
                {
                    r2 = rnd.Next(0, 7);
                }
                else
                {
                    r2 = rnd.Next(0, 16);
                }
                string str_r2 = rBase[r2].Trim();
                rnd = new Random(r2 * unchecked((int)DateTime.Now.Ticks) + i);
                int r3 = rnd.Next(10, 16);
                string str_r3 = rBase[r3].Trim();
                rnd = new Random(r3 * unchecked((int)DateTime.Now.Ticks) + i);
                int r4;
                if (r3 == 10)
                {
                    r4 = rnd.Next(1, 16);
                }
                else if (r3 == 15)
                {
                    r4 = rnd.Next(0, 15);
                }
                else
                {
                    r4 = rnd.Next(0, 16);
                }
                string str_r4 = rBase[r4].Trim();
                byte byte1 = Convert.ToByte(str_r1 + str_r2, 16);
                byte byte2 = Convert.ToByte(str_r3 + str_r4, 16);
                byte[] str_r = new byte[] { byte1, byte2 };
                bytes.SetValue(str_r, i);
            }

            return bytes;
        }
        #endregion

}

实例代码和Dll文件下载

 

 

作者:破  狼 
出处:http://www.cnblogs.com/whitewolf/ 
本文版权归作者,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。该文章也同时发布在我的独立博客中-个人独立博客博客园--破狼51CTO--破狼。http://www.cnblogs.com/whitewolf/archive/2009/12/08/1619106.html

时间: 2025-01-21 18:20:22

支持拼音检索的TextBox扩展控件-使用的相关文章

支持拼音检索的TextBox扩展控件

    最近因项目中要用,于是就扩展了TextBox实现输入汉字首字母简单查询.控件扩展代码很简单.但是刚开始,一直没有找到扩展入口,始终无法展现下拉框.先想通过AutoCompleteCustomSource属性改变来实现,但最终没法扩展.后又想到ComboBox但是,也不好控制.经过一天的思考后决定用TextBox + ListBox组合扩展(主要为继承至TextBox和持有ListBox: 效果先上:   最要实现代码有: 类原型public class SpellSearchBoxEx

如何创建一个AJAXControlToolKit的扩展控件_实用技巧

微软的AJAXControlToolKit提供了很容易的扩展方式,小弟我也是初学ajaxcontroltoolkit的扩展,所以这里举个例子,一起来学习,如果有什么好的建议和例子请提出来一起分享. 其实Microsoft的ajax官网给出的扩展说明已经很详细了,而且有个例子,严格来说确实有点简单,但是总结一下每个扩展控件大致需要注意如下几点: 1. 必须添加的dll: System.Web.dll , System.Web.Extensions.dll, System.Design.dll, S

vb.net中如何在查询生成器中引用如TEXTBOX等控件内的值为查询条件

问题描述 vb.net中如何在查询生成器中引用如TEXTBOX等控件内的值为查询条件 解决方案 解决方案二:COPY&PASTE

aspx- .net4.5无法显示textbox等控件

问题描述 .net4.5无法显示textbox等控件 vs2013写的网站,连数据库,本机.net4.5,在本机运行一切正常,申请了域名和空间,打开域名后,如下错误: 无法显示textbox等控件,只能显示background背景图片,且在页面最上方显示aspx的第一行代码<%@ page="" language="C#" autoeventwireup="true" codefile="index.aspx.cs" i

extjs-请教Extjs 2.0 扩展控件怎么写才能兼容多浏览器

问题描述 请教Extjs 2.0 扩展控件怎么写才能兼容多浏览器 代码如下,只能在IE里使用,火狐等其他浏览器导致表单其他控件不显示 请教指点,应该怎么完善代码,才能让该扩展控件 兼容多浏览器 //RadioList /* --使用范例 { xtype:'radiolist', fieldLabel: '列表', anchor:'90%', id:'ListRadio', store: new Ext.data.SimpleStore({ fields: ['value', 'text'], d

winform-WinForm窗体中,清空诸如TEXTBOX 等控件中用户输入的内容

问题描述 WinForm窗体中,清空诸如TEXTBOX 等控件中用户输入的内容 WinForm窗体中,清空诸如TEXTBOX 等控件中用户输入的内容.记得有使用Controls和foreach 之类的.... 在下初学者,悉心求教.望各长辈指点迷津 解决方案 foreach (TextBox tb in Controls.OfType<TextBox>()) { tb.Text = ""; } 解决方案二: 不同的控件没有通用的方法,不过你可以有另一个思路,就是把窗体重新加

.net-类型“TextBox”的控件必须放在具有 runat=server 的窗体标记内。

问题描述 类型"TextBox"的控件必须放在具有 runat=server 的窗体标记内. 类型"TextBox"的控件"txt_UserName"必须放在具有 runat=server 的窗体标记内. 这个错误如何解决? 解决方案 你看下你的TextBox控件是否跟这个一致. 解决方案二: id 为txt_UserName 控件标记 必须加上 runat='"server " 解决方案三: 类型"TextBox&

怎么样创建一个扩展控件程序?

问题描述 本人一菜鸟正在学习控件使用技术.想咨询一下各位,如何创建一个扩展控件程序,我想将我自己写的扩展控件添加到工具栏中使用.我看一个教程说是"新建项目的时候添加一个类库"对吗?请各出具体操作方法的步骤,当然越简单越好吧,谢谢! 解决方案 解决方案二:1.可以用userControl2.写一个类,继承自系统控件就是.解决方案三:up解决方案四:说的有点抽象...解决方案五:楼主是想做VS插件解决方案六:http://download.csdn.net/detail/yanele/39

在IE8上JS实现combobox支持拼音检索功能_javascript技巧

最近在ie8碰到一个js问题,需要实现(ie8)使用拼音或者拼音首字母来检索select中的内容,原来的combobox只能支持汉字输入检索,现在需要进行改进,现在我将一步一步的实现方法记录下来,功能简单,也可能有bug和不足,供学习参考.(本文只是提供思路学习和备份,实际情况需要在ie8或者ie兼容模式上使用,所以没有考虑到别的浏览器) 目录结构: test |--js |--index.html 在index页面中添加 index.html <!DOCTYPE html> <html