zoukankan      html  css  js  c++  java
  • WinForm"搜索提示效果(不错的)实现" 之 配餐系统的开发

         与"窗体加载闪烁处理、无边框窗体的移动" 之 配餐系统的开发 这篇文章一样,本文还是将 配餐系统开发中的经验与大家一起分享和交流,或者说是‘抛砖引玉’——希望有朋友能提出更好的建议或方法。好了,切入正题,本文所要说的'搜索提示效果' 就是搜索引擎网站和很多网站中的搜索——搜索关键词提示效果,这种效果在网站(web项目)中很常见,也容易实现,而在这里要说的是在winform(桌面应用程序)中实现。

         winform中实现'搜索提示' ,我们在动手做之前,大概会有以下几点考虑:1.用什么控件用来做 搜索提示框——而且好用 易实现 比较美观(This is point!!!)。2.考虑如何实现 搜索提示框的定位显示 和 在搜索文本框的哪些事件中 做相应的处理——搜索提示框的显示或隐藏(这个就简单了)。 只针对 第一点说明:我们可能会有以下的选择:用textBox,listBox,DataGridView...做为 搜索提示框,其中用 textBox实现——其有类似的属性(如:图1),但无论是功能或效果都不怎么好,具体应用可以上网查,这里就不再叙述。

         用 listBox实现,好的效果 需要对控件进行重绘,比较麻烦;我最终的实现 选用的是 DataGridView(其实一开始就考虑到了,但是感觉应该找个更轻量级的控件),效果如下:

        

             

    代码
    void dgvSwShow_CellMouseLeave(object sender, DataGridViewCellEventArgs e)
    {
    if (e.RowIndex > -1)
    {
    this.dgvSwShow.Rows[e.RowIndex].DefaultCellStyle.BackColor = Color.White;
    this.dgvSwShow.CurrentCell = null;
    }
    }

    void dgvSwShow_CellMouseEnter(object sender, DataGridViewCellEventArgs e)
    {
    if (e.RowIndex > -1)
    {
    this.dgvSwShow.Rows[e.RowIndex].Cells[e.ColumnIndex].ToolTipText = "点击查看食物详细信息!";
    this.dgvSwShow.Rows[e.RowIndex].DefaultCellStyle.BackColor = Color.Orange;
    this.dgvSwShow.CurrentCell = null;
    }
    }

    void txtKey_KeyUp(object sender, KeyEventArgs e)
    {
    string key = this.txtKey.Text.Trim();
    if (key == txtStr || string.IsNullOrEmpty(key))
    {
    ShowOrHideTipPanel(
    false);
    return;
    }
    DataTable dt
    = ZhiyiHelper.DBHelper.GetTable("select top 8 id,name from tet where " + ZhiyiService.FoodService.GetLikeNameWhere(key) + " order by Id desc");
    int swCount = dt.Rows.Count;
    if (swCount == 0)
    {
    IsHideTipPanel_inner(
    false);
    this.lblNoSw.Text = " 没有您要的结果哦:)";
    }
    else
    {
    this.dgvSwShow.Height = swCount*25;
    this.dgvSwShow.Location = new Point(0, 0);
    this.dgvSwShow.DataSource = dt;
    IsHideTipPanel_inner(
    true);
    //取消默认选中第一行
    //this.dgvSwShow.ClearSelection();
    this.dgvSwShow.CurrentCell = null;
    }
    ShowOrHideTipPanel(
    true);
    }

         看 图片和代码,已经很清楚了,用到dgvSwShow(搜索提示框) CellMouseEnter 和 CellMouseLeave事件——实现 颜色切换,搜索输入框 txtKey 的keyUp事件。好了,到此为止,有不清楚的朋友,可留言或QQ交流,希望大家多提意见!

  • 相关阅读:
    51nod 1087 1 10 100 1000(找规律+递推+stl)
    51nod 1082 与7无关的数 (打表预处理)
    51 nod 1080 两个数的平方和
    1015 水仙花数(水题)
    51 nod 1003 阶乘后面0的数量
    51nod 1002 数塔取数问题
    51 nod 1001 数组中和等于K的数对
    51 nod 1081 子段求和
    51nod 1134 最长递增子序列 (O(nlogn)算法)
    51nod 1174 区间中最大的数(RMQ)
  • 原文地址:https://www.cnblogs.com/know/p/1936490.html
Copyright © 2011-2022 走看看