在datagridview中实现按F2调出帮助窗口
为了能在datagridview中实现按F2键调出另外一个窗口,显示帮助信息,并且能够模糊查找。比如在录入凭证的时候,在科目列按F2键,在另一个窗口显示科目信息。 需要重写datagridview类,可以参照上篇文章,本文只把不同的地方写出来。
protected override bool ProcessCmdKey(ref System.Windows.Forms.Message msg, System.Windows.Forms.Keys keyData)
{
switch (keyData)
{
//回车键切换焦点,当焦点在第五列的时候,回车换行。
case System.Windows.Forms.Keys.Enter:
{
if (this.CurrentCell.ColumnIndex.ToString() == "4")
{
this.Rows.Add();
//焦点默认在新增行的第一列。
this.CurrentCell = this[0, this.CurrentCell.RowIndex];
}
//回车键切换焦点
else
{
System.Windows.Forms.SendKeys.Send("{TAB}");
}
break;
}
//F2键调出帮助窗口。
case System.Windows.Forms.Keys.F2:
{
if (this.CurrentCell.ColumnIndex.ToString() == "1")
{
//将焦点切换到下一个单元格。
this.CurrentCell = this[3, this.CurrentCell.RowIndex];
//mid共有静态变量,记载当前窗口第一列录入的内容。在帮助窗口中可以实现模糊查找。
//比如凭证录入,在科目那里录入1001,按F2以后,在帮助窗口显示的只是包含1001的科目。
//这是在帮助中的部分sql代码。可以实现按照编号或者名称模糊查找。
//string aaa = mygridview.mid;
//string sql = "select id as 编号,name as 科目名称 from kemu where mingxi=1 and (id //like '" + "%" + aaa + "%" + "' or name like '" + "%" + aaa + "%" + "')";
if (this[1, this.CurrentCell.RowIndex].Value == null)
mygridview.mid = "";
else mygridview.mid = this[1,this.CurrentCell.RowIndex].Value.ToString(); //显示帮助窗口。
kmhp ab = new kmhp();
ab.ShowDialog();
//sid,sname。共有静态变量,记载帮助窗口选择的内容。当在帮助窗口双击或者选择记录回车后
//将值付给当前datagridview的单元格。
this[1, this.CurrentCell.RowIndex].Value = sid;
this[2, this.CurrentCell.RowIndex].Value = sname;
}
}
return true;
}
return base.ProcessCmdKey(ref msg, keyData);
}
}