WinForm"搜索提示效果(不错的)实现" 之 配餐系统的开发

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

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

2011011522512326.gif

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

     2011011522560437.jpg

         

ContractedBlock.gif ExpandedBlockStart.gif 代码
 
   
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交流,希望大家多提意见!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值