在WinForm里,怎么做出这样的效果,是控件,还是代码?
效果说明:在文本框里面输入信息,自动弹出一个GridView自动提示补全信息
效果图:
或者,我达到我想要的效果也行
效果:输入时,自动提示,选择自动提示以后,可以获得与这个文本相关联的值
示例:
在文本框输入“张”,自动提示“张三”,“张无忌”等等,架设选择了“张三”获取到张三的学号“12345”
看到好多软件都有这样的功能,挺神奇的,求教

解决方案 »

  1.   

    必然是代码,因为会查询数据结构。
    按你的思路,应该是查询数据库,从数据库中遍历所有
    以“张”起头的用户名,将结果绑定给dataview。再给dataview写好点击事件,点击显示该用户的学号
      

  2.   

    .net的控件有一个自动完成的功能,不过功能很弱,控件都有一个属性为自动完成模式,还有一个自动完成的集合,这个机制很弱,一般解决不了问题,你还是需要自己编程实现,也很容易实现,响应TextChanged时间,查询一下数据库,然后打开一个小窗口提示就可以,
      

  3.   

    其实我最不明白的就是那个小窗口怎么弄出来的,还可以选择,好像不是一个新的窗体,有点像WEB里面层的概念
      

  4.   


    新建一个form,不显示边框,展现的时候定义号form的location就可以了
      

  5.   

    panel+dataGridView
    控制其显示和掩藏,,
    先将数据存在datatable里面文本框事件触发后对dataGridview绑定
    DataRow[] drList = datatable.Select(sql); private void bindDgv(DataRow [] drList)
            {
                Dgv.Rows.Clear();
                foreach (DataRow row in drList)
                {
                    DataGridView dgv = new DataGridView();
                    int index = DgvQCed.Rows.Add(dgv);
                    DgvQCed.Rows[index].Cells["name"].Value = row["name"].ToString();
                    DgvQCed.Rows[index].Cells["number"].Value = row["number"].ToString();
    }
      

  6.   

    好像不能上下键选择GirdView里面的东西吧
      

  7.   

    类似网页中的ajax在用代码实现
    在onchange事件里查询一下数据库,提示出来 。
      

  8.   

     private bool LoadChildControls(ref int y, string[] str1, string[] softStr)
            {
                ComboBox cb = null;
                ComboBox cb1 = null;
                Label lb = null;
                bool flag = false;
                this.bigpane1.Controls.Clear();
                for (int i = 0; i < com.Indexlist.Count; i++)
                {
                    lb = new Label();
                    lb.Text = com.Indexlist[i].ToString() + ":" + " ";
                    lb.Name = "a";
                    lb.SetBounds(88, y, 110, 28);
                    cb = new ComboBox();
                    cb.SetBounds(165, y, 150, 38);
                    y = y + 40;
                    //cb.SelectedValueChanged += new EventHandler(cb_SelectedValueChanged);
                    cb.Parent = bigpane1;
                    lb.Parent = bigpane1;
                    for (int k = 0; k < str1.Length - 1; k++)
                    { cb.Items.Add(str1[k].ToString()); }
                }