110,580
社区成员
发帖
与我相关
我的任务
分享
private void dgvInfoPerson_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
{
if (dgvInfoPerson.CurrentCellAddress.X == dgvInfoPerson.Columns["colCboDeptNo"].Index)
{
cbo = e.Control as ComboBox;
if (cbo != null)
{
cbo.DropDownStyle = ComboBoxStyle.DropDown;
cbo.AutoCompleteMode = AutoCompleteMode.SuggestAppend;
}
}
}
private void dgvInfoPerson_CellValidating(object sender, DataGridViewCellValidatingEventArgs e)
{
if (dgvInfoPerson.CurrentCellAddress.X == dgvInfoPerson.Columns["colCboDeptNo"].Index)
{
//问题出在这里.如果你输入的是ValueMember的值的话就没问题.但你如果输入的是DisplayMember的值的话就不会选中.
//如ValueMember="MAN" DisplayMember="管理部",如果你在此单元格输入MAN就没问题,但输入管理部就不会选中.但用户就应该是输入管理部
//而不是输入MAN.
dgvInfoPerson.Rows[e.RowIndex].Cells[e.ColumnIndex].Value = e.FormattedValue;
}
}
if (Items.IndexOf(value) == -1)
{
value=Items[0];//不在下拉默认为下拉0项,我的0项一般是"OFF"\"None",可以自己做判断处理的
}
/// <summary>
/// 按回车时模拟按下Tab键
/// </summary>
/// <param name="msg"></param>
/// <param name="keyData"></param>
/// <returns></returns>
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
//先执行原来base.ProcessCmdKey中的处理
bool result = base.ProcessCmdKey(ref msg, keyData);
//判断键盘按下的键。如果等于“enter”,则send一个“{tab}”。模拟按下“tab”键,实现单元格。向下移动
if (keyData == Keys.Enter)
{
System.Windows.Forms.SendKeys.Send("{tab}");
return true;
}
return result;
}