资源简介

1 我个人感觉,这个实例用文本框实现下拉框的最好办法. 2 先把数据填充到datatale表(内存中的数据表), 我是手动填进去的.大家也可以从SQL取出数据赋给datatable表 3 实现的模糊查询, 是直接从内存中查询, 从SQL库中查或从内存中查, 我觉得后者最好. 因为客户端多 的时候, 可以非常大程序上减轻服务器的负担. 4 我写了很久很认真, 全部清楚的注释了. 希望能帮到几个学习中的朋友

资源截图

代码片段和文件信息

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

/*******************************************************************************************
 *1 我个人感觉这个实例用文本框实现下拉框的最好办法.
 *2 先把数据填充到内存中datatale表 我是手动填进去的.大家可以从SQL取出数据赋给这张datatable表
 *3 实现的模糊查询 是直接从内存中查询 从SQL库中查或从内存中查 我觉得后者最好. 因为客户端多
 * 的时候 可以非常大程序上减轻服务器的负担.
 *4 我写了很久很认真 全部清楚的注释了. 希望能帮到几个学习中的朋友
 *5 吴官迪 QQ357818109    2014/01/18
 * *****************************************************************************************/


namespace textbox下拉提示
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void textBox_费用名称_TextChanged(object sender EventArgs e)//在文本框里输入字的时候触发的事件执行的语句.
        {
            listBox2.Items.Clear();//先清空一下这个控件的值.  不然就会造成文本框里不输时这里面全部都是值
            DataTable dt = new DataTable();//在内存中创建一个表
            dt.Columns.Add(“名称“);           //在表中增加一列  名称叫做“名称“
            dt.Rows.Add(“C#语言“);//开始一行一行的添加数据
            dt.Rows.Add(“javaSE“);
            dt.Rows.Add(“java“);
            dt.Rows.Add(“C++语言“);
            dt.Rows.Add(“delphi“);
            dt.Rows.Add(“java入门通“);
            dt.Rows.Add(“C++入门通“);
            dt.Rows.Add(“M#入门通“);//以上这段落 是手动添加数据到内存中.  这一段可以改为从SQL中获取数据后赋值给这个datatable对象
            
      
            DataRow[] dr = dt.Select(“名称 like‘%“ + textBox_费用名称.Text + “%‘“);
            DataTable newdt = new DataTable(); //再新创建一个表
            newdt=dt.Clone();//复制dt表的所有结构

            foreach (DataRow row in dr) { newdt.Rows.Add(row.ItemArray); }//这一句可以改成用for循环替代  循环内就用 newdt.ImportRow(dr[i]);



            if (dt.Rows.Count > 0 && (textBox_费用名称.Text != ““))//如果这个DS表里的行数总数大于零并且文本框不为空就运行以下代码
            {
                listBox2.Visible = true;      //listBox2显示出来  
                for (int i = 0; i < newdt.Rows.Count; i++)//循环所有行数
                {
                    listBox2.Items.Add(newdt.Rows[i][“名称“].ToString());//每行的名称值给listBox2
                }
            }

          
        }

        private void textBox_费用名称_KeyUp(object sender KeyEventArgs e)//这个事件 作用是按上下键选择下拉列表里的值
        {
            if (e.KeyCode == Keys.Up)//如果按了向上键
            {
                int idx = listBox2.SelectedIndex;//获取当前所选择的是哪一项
                if (idx == -1)//如果所选荐是-1就表示没有选中任何值是刚进入的
                {
                    listBox2.SelectedItem = listBox2.Items[listBox2.Items.Count - 1];//让他选中最后一个也就是总数减1
                }
                else
                {
                    if (idx == 0)//等于零表示此时选中的是在第一行.
                    {
                        listBox2.SelectedItem = listBox2.Items[listBox2.Items.Count - 1];//再按向上键就跳到最后一个.
                        idx = listBox2.Items.Count;//当前选中的这一行就是值的总数

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件        187  2014-01-18 10:31  textbox下拉提示源代码\App.config

     文件      11264  2014-01-18 12:59  textbox下拉提示源代码\bin\Debug\textbox下拉提示.exe

     文件        187  2014-01-18 10:31  textbox下拉提示源代码\bin\Debug\textbox下拉提示.exe.config

     文件      26112  2014-01-18 12:59  textbox下拉提示源代码\bin\Debug\textbox下拉提示.pdb

     文件      22984  2014-01-18 13:00  textbox下拉提示源代码\bin\Debug\textbox下拉提示.vshost.exe

     文件        187  2014-01-18 10:31  textbox下拉提示源代码\bin\Debug\textbox下拉提示.vshost.exe.config

     文件        490  2012-06-06 02:06  textbox下拉提示源代码\bin\Debug\textbox下拉提示.vshost.exe.manifest

     文件       6252  2014-01-18 12:59  textbox下拉提示源代码\Form1.cs

     文件       4701  2014-01-18 12:59  textbox下拉提示源代码\Form1.Designer.cs

     文件       5817  2014-01-18 12:59  textbox下拉提示源代码\Form1.resx

     文件       7028  2014-01-18 10:31  textbox下拉提示源代码\obj\Debug\DesignTimeResolveAssemblyReferencesInput.cache

     文件          0  2014-01-18 10:31  textbox下拉提示源代码\obj\Debug\TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs

     文件          0  2014-01-18 10:31  textbox下拉提示源代码\obj\Debug\TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs

     文件          0  2014-01-18 10:31  textbox下拉提示源代码\obj\Debug\TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs

     文件       1113  2014-01-18 13:00  textbox下拉提示源代码\obj\Debug\textbox下拉提示.csproj.FileListAbsolute.txt

     文件        975  2014-01-18 12:59  textbox下拉提示源代码\obj\Debug\textbox下拉提示.csproj.GenerateResource.Cache

     文件       2143  2014-01-18 10:49  textbox下拉提示源代码\obj\Debug\textbox下拉提示.csprojResolveAssemblyReference.cache

     文件      11264  2014-01-18 12:59  textbox下拉提示源代码\obj\Debug\textbox下拉提示.exe

     文件        180  2014-01-18 12:59  textbox下拉提示源代码\obj\Debug\textbox下拉提示.Form1.resources

     文件      26112  2014-01-18 12:59  textbox下拉提示源代码\obj\Debug\textbox下拉提示.pdb

     文件        180  2014-01-18 12:54  textbox下拉提示源代码\obj\Debug\textbox下拉提示.Properties.Resources.resources

     文件        531  2014-01-18 10:31  textbox下拉提示源代码\Program.cs

     文件       1392  2014-01-18 10:31  textbox下拉提示源代码\Properties\AssemblyInfo.cs

     文件       2890  2014-01-18 10:31  textbox下拉提示源代码\Properties\Resources.Designer.cs

     文件       5612  2014-01-18 10:31  textbox下拉提示源代码\Properties\Resources.resx

     文件       1106  2014-01-18 10:31  textbox下拉提示源代码\Properties\Settings.Designer.cs

     文件        249  2014-01-18 10:31  textbox下拉提示源代码\Properties\Settings.settings

     文件       3817  2014-01-18 12:54  textbox下拉提示源代码\textbox下拉提示.csproj

     文件      11264  2014-01-18 12:59  textbox下拉提示实例.exe

     目录          0  2014-01-18 10:31  textbox下拉提示源代码\obj\Debug\TempPE

............此处省略9个文件信息

评论

共有 条评论