在DataGridView中,根据输入的值更改选定的单元格

时间:2014-01-13 16:45:50

标签: c# vb.net winforms datagridview

在我的datagridview中,我有以下列:

  

部分,描述,已售出数量,数量已损失,售价

如果用户在我的DataGridView中输入有效的部件号,我希望焦点直接移动到qty sold列,以便用户可以输入他们订购的数量。

我意识到这段代码可以更改datagridview中的选定单元格:

dgvPOS.Rows(intCurrentRow).Cells("ordQtySold").Selected = True

但是在datagridview的什么事件下我放这个代码?如果用户键入有效部分,然后点击选项卡按钮,我就会遇到焦点转到下一列(即描述列)的问题,尽管上面提到的代码是将其移动到qty sold列

我的另一个问题是,如果用户在用户输入有效部分之前单击或尝试选项卡或箭头指向qty sold列,我希望程序将用户移回部件列单元格。现在我意识到我可以阻止用户进入任何其他单元格,直到使用CellValidating事件输入有效部分(e.cancel = true除非输入有效部分),但是如果没有输入部件号而用户改为尝试移动到具有有效部件信息的前一行时,CellValidating事件下的代码将无法工作,因为当您更改单元格时,CellValidating事件不知道您尝试更改为哪个单元格......这意味着我可以'写代码来考虑用户试图将焦点移动到的位置。我已经解决了这个问题一个坚实的一周(至少40 +小时)请帮忙。

1 个答案:

答案 0 :(得分:0)

对于第二个问题,

只有当部件号不为空时,您才可以设置e.Cancel=true。在CellValidating事件处理程序

中添加以下代码
if(e.FormattedValue != null && !e.FormattedValue.ToString().IsNullOrEmpty())
{
      e.Cancel = true;
}