【问题标题】:How to set focus on specific cell in datagridview after a validation error?验证错误后如何将焦点设置在datagridview中的特定单元格上?
【发布时间】:2012-04-09 18:01:53
【问题描述】:

朋友们,我有一个 Windows 应用程序,我在其中使用 datagridview 来显示现有数据以及添加/编辑数据。 datagridview 有一个功能,在 Tab/Enter 键上按下焦点将移动到下一个单元格。如果它是一行中的最后一列,那么焦点将转到下一行的第一列。现在在为单元格输入数据并按 Tab/Enter 键后,如果出现错误输入数据的错误消息(如数值格式不正确或值小于零等),在显示错误消息后一个消息框,焦点正在移动到下一个单元格。有没有什么办法可以让特定单元格出现错误消息,然后焦点将设置到该错误生成单元格,它不会移动到下一个单元格?在 dgView_CellEndEdit 事件中,我尝试使用代码选择单元格:

    dgView.Rows[e.RowIndex].Cells["ColumnName"].Value = "0.00";
    dgView.Select();
    dgView.CurrentCell.Selected = true;

但它不起作用。在我使用过的 dgView_SelectionChanged 事件中:

    dgView.CurrentCell = dgView[RequiredColumnIndex, RequiredRowIndex];
    dgView.BeginEdit(true);

这也无济于事。请帮我解决问题。

【问题讨论】:

    标签: c# winforms datagridview setfocus


    【解决方案1】:

    我认为您应该使用CellValidating 事件进行检查和验证。如果某些检查失败,您可以提示错误消息并设置 e.Handlede.Cancel= false。这将使焦点保持在当前错误单元格中,直到您进行所需的更正。

    【讨论】:

    • 在 dgView_SelectionChanged 事件中,我正在设置 dgView.CurrentCell。但是这里它给出了以下错误“操作没有成功,因为程序无法提交或退出单元格值更改。” .PLease建议做什么。
    • 我用的是visual-studio 2005,没有e.handled的东西,有e.Cancel
    • @Sukanya 你是对的e.Cancel,对于错误我认为你需要提交单元格值grid.CommitEdit(DataGridViewDataErrorContexts.Commit) 类似的东西,然后设置当前单元格
    • 在为 dgView.CurrentCell 设置值之前,我写了一行“dgView.CommitEdit(DataGridViewDataErrorContexts.Commit);”在 cellValidating 事件中,我设置了 e.Cancel=true;(如果有任何错误),但它给出的错误与“操作没有成功,因为程序无法提交或退出单元格值更改”相同。在 SelectionChanged 事件中。
    • 你试过这个dataGridView1.Rows[currRow].Selected = true;
    猜你喜欢
    • 2011-10-12
    • 2012-07-12
    • 2011-06-22
    • 2012-08-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-01
    相关资源
    最近更新 更多