在C/S下面,每打开一个窗体,DataGrid里都会读取出好多数据
为了方便查询数据,能不能像EXCEL一样,按一下Ctrl+F就弹出一个窗口,输入要查询的数据
如果数据存在,则选中该行数据,并变颜色请各位高手指点,万分感谢~~

解决方案 »

  1.   

    自己做,在Datagrid中捕获按键,如果是ctrl+f的话,就弹出窗体,然后在窗体中数据后,用数据源找到相应的行,最后在datagrid中去定位此行。
      

  2.   

    这个应该不难吧,在DataGrid的KeyDown事件中,检测是否按下了Ctrl+F,如果是,则弹出查询对话框,然后确定查询条件,从数据库中查询,然后绑定到DataGrid.
      

  3.   

    to 这个慢慢试验吧,我也遇到过,不过后来没有这样做,可能不好做的是两个窗体的焦点的控制问题其实不需要焦点转移,或者这些你不需要做太多的事,
    你把显示datagrid的窗体,对数据源的查找操作提供一个方法,然后把它委托给查找窗体,最后在查找窗体中触发这个事件即可。
      

  4.   

    按照 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怎么还选中行呢?
      

  5.   

    还有没有其它更好的方法呢
    功能最好是和EXCEL的一样,呵呵,挑战高难度~~
      

  6.   

    根本不用考虑焦点问题。
    首先应该把主窗体的KeyPreview属性设定为 true 
    这时候,焦点不管在主窗体上任何控件上,只要有按键事件,主窗体都会同时获得此事件。
    然后自己在主窗体的 KeyDown 事件里面自己检查 Ctrl + F
      

  7.   

    private void dataGrid1_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e)
    {
    if (e.Alt && e.KeyCode == Keys.F)
    {
    Form2 f2 = new Form2();
    f2.Show();
    }
    }
      

  8.   

    哈哈,这一点c/s的就没有b/s的方便。
      

  9.   

    捕获按键信息就可以啊!
    可以看看win系统消息
      

  10.   

    考虑用Developer Express 控件呢