请教各C#高手:如何实用Ctrl+F查询功能,就像EXCEL表格一样!
在C/S下面,每打开一个窗体,DataGrid里都会读取出好多数据
为了方便查询数据,能不能像EXCEL一样,按一下Ctrl+F就弹出一个窗口,输入要查询的数据
如果数据存在,则选中该行数据,并变颜色
请各位高手指点,万分感谢~~
问题点数:20、回复次数:28Top
1 楼keconghua(E代風花雪月)回复于 2006-07-04 09:51:51 得分 0
自已顶一下,高手进来坐坐吧~~Top
2 楼SolidGL(管理管理,管的合理才叫管理.)回复于 2006-07-06 09:47:59 得分 0
很难吗?没感觉啊.Top
3 楼Knight94(愚翁)回复于 2006-07-06 10:00:07 得分 2
自己做,在Datagrid中捕获按键,如果是ctrl+f的话,就弹出窗体,然后在窗体中数据后,用数据源找到相应的行,最后在datagrid中去定位此行。Top
4 楼keconghua(E代風花雪月)回复于 2006-07-07 14:23:45 得分 0
说起来容易,做起来难呀
这个功能其实很有用的,能否给个示例来学习一下呢Top
5 楼zhgroup(王员外)回复于 2006-07-10 11:23:14 得分 2
这个应该不难吧,在DataGrid的KeyDown事件中,检测是否按下了Ctrl+F,如果是,则弹出查询对话框,然后确定查询条件,从数据库中查询,然后绑定到DataGrid.Top
6 楼yumanqing(笨鸟)回复于 2006-07-10 11:43:31 得分 1
这个慢慢试验吧,我也遇到过,不过后来没有这样做,可能不好做的是两个窗体的焦点的控制问题,Top
7 楼Knight94(愚翁)回复于 2006-07-10 11:53:46 得分 2
to 这个慢慢试验吧,我也遇到过,不过后来没有这样做,可能不好做的是两个窗体的焦点的控制问题
其实不需要焦点转移,或者这些你不需要做太多的事,
你把显示datagrid的窗体,对数据源的查找操作提供一个方法,然后把它委托给查找窗体,最后在查找窗体中触发这个事件即可。Top
8 楼keconghua(E代風花雪月)回复于 2006-07-10 15:07:35 得分 0
按照 Knight94(愚翁) 所说,我DataGrid是这样做的:
查询页面:
public delegate void gridSqlDelegate(object sender,SqlEventArgs e);
[Category("自定义事件"),Description("给 DataGrid 绑定的事件")]
public event gridSqlDelegate gridSqlEvent;
private void button1_Click(object sender, System.EventArgs e)
{
//this.Paras = this.textBox1.Text;
//this.DialogResult = DialogResult.OK;
SqlEventArgs setSql = new SqlEventArgs(this.textBox1.Text);
this.gridSqlEvent(e,setSql);
}
public class SqlEventArgs : System.EventArgs
{
public SqlEventArgs(string val)
{
sql = val;
}
private string sql;
public string Sql
{
get{ return sql; }
}
}
GRID页面:
CFMS_Search search = new CFMS_Search();
search.gridSqlEvent += new CFMS_Search.gridSqlDelegate(query_gridSqlEvent);
search.Show();
private void query_gridSqlEvent(object sender, CFMS_Search.SqlEventArgs e)
{
//选中DATAGRID
}
但是ListView怎么还选中行呢? Top
9 楼keconghua(E代風花雪月)回复于 2006-07-22 08:28:53 得分 0
还有没有其它更好的方法呢
功能最好是和EXCEL的一样,呵呵,挑战高难度~~Top
10 楼eplox(090-7523-38**)回复于 2006-07-22 08:48:03 得分 2
根本不用考虑焦点问题。
首先应该把主窗体的KeyPreview属性设定为 true
这时候,焦点不管在主窗体上任何控件上,只要有按键事件,主窗体都会同时获得此事件。
然后自己在主窗体的 KeyDown 事件里面自己检查 Ctrl + FTop
11 楼zhaochunyu0104(春雨)回复于 2006-07-22 09:14:16 得分 0
也许以后会用到,markTop
12 楼yuan135()回复于 2006-07-22 11:52:21 得分 0
很好的构思,应该可以实现Top
13 楼gsky()回复于 2006-07-25 00:17:56 得分 0
upTop
14 楼xiangyuen(成绩是汗)回复于 2006-07-25 16:25:27 得分 0
期待解决方法。Top
15 楼qw_study(QW-KING)回复于 2006-07-31 17:32:11 得分 0
建一个菜单按扭
里面有支持快洁键的属性
然后给他加上事件就OK了Top
16 楼yf1025(小桥,流水,人家)回复于 2006-08-02 10:59:55 得分 0
这个功能挺不错,mark下Top
17 楼erental(月下萧风)回复于 2006-08-08 08:24:07 得分 0
markTop
18 楼sophia2000(喝血社会)回复于 2006-08-08 16:24:53 得分 0
学习Top
19 楼wwqna(york)回复于 2006-08-14 10:14:41 得分 1
比较麻烦,首先就要看你的那个控件支不支持变颜色,然后这个按键的捕获问题Top
20 楼netboygg(菜菜)回复于 2006-08-15 08:09:03 得分 0
markTop
21 楼kkk_visual(凡事对错先问自己)回复于 2006-08-15 14:08:04 得分 5
private void dataGrid1_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e)
{
if (e.Alt && e.KeyCode == Keys.F)
{
Form2 f2 = new Form2();
f2.Show();
}
}Top
22 楼givenchy(希希)回复于 2006-08-16 09:45:21 得分 1
哈哈,这一点c/s的就没有b/s的方便。Top
23 楼Samen168(Code to coding)回复于 2006-08-17 08:59:10 得分 1
处理KeyDownTop
24 楼guyes123(以为喜欢这里,所以来接分)回复于 2006-08-18 14:46:04 得分 0
没看懂,以后再看Top
25 楼kingtoo009()回复于 2006-08-20 16:20:49 得分 0
呵呵帮忙顶下.
------------------------------------------------------------------------------------
100M.Net空间+50M企业邮局=60元/年
100M.Net空间+国际顶级域名=100元/年
国际顶级域名.com.net.cn=50元/年
本站申请域名可绑定免费10M Asp.Net空间
1000M.Net空间 + 100M MsSql数据库 + 1000M企业邮局 + 顶级域名=600元/年
数据库 企业邮局 网站推广 整机租用 美国空间 网站建设 均有售
还有很多优惠套餐提供给各个用户层.
有意者可联系电话:021-64802212 传真:021-64802212
咨询信箱:info@kingtoo.com 咨询OICQ:68311305,379620139 81778640
Top
26 楼shaqulle()回复于 2006-08-20 16:36:34 得分 1
keypressTop
27 楼pcj2008(☆蓬草江☆)回复于 2006-08-22 09:15:52 得分 1
捕获按键信息就可以啊!
可以看看win系统消息。。。Top
28 楼xiaobifei(小菲)回复于 2006-08-28 08:38:35 得分 1
考虑用Developer Express 控件呢Top
29 楼jdhost(魏封侯)回复于 2006-09-01 09:07:06 得分 0
关注Top




