在 Devexpress 中不添加新行时如何防止打开编辑表单

How to prevent edit form from opening when not adding a new row in Devexpress

我在 Devexpress 中有这个 gridview。我有一个打开的弹出式编辑表单 当我想添加新行时。但是,我想阻止弹出表单 在我尝试编辑一行时打开。

我已经尝试处理鼠标按下和双击事件,但我仍然得到 一直弹出。

    Private Sub gvMFFSeries_MouseDown(sender As Object, e As MouseEventArgs) Handles gvMFFSeries.MouseDown
    Dim view As GridView = TryCast(sender, GridView)
    Dim hitinfo = view.CalcHitInfo(e.Location)
    If Not hitinfo.RowHandle = DevExpress.XtraGrid.GridControl.NewItemRowHandle Then
        DXMouseEventArgs.GetMouseArgs(e).Handled = False
    End If
End Sub

Private Sub gvMFFSeries_DoubleClick(sender As Object, e As EventArgs) Handles gvMFFSeries.DoubleClick
    Dim view As GridView = TryCast(sender, GridView)
    Dim mouseEventArgs As DXMouseEventArgs = TryCast(e, MouseEventArgs)
    Dim hitinfo = view.CalcHitInfo(mouseEventArgs.Location)
    If Not hitinfo.RowHandle = DevExpress.XtraGrid.GridControl.NewItemRowHandle Then
        DXMouseEventArgs.GetMouseArgs(e).Handled = False
    End If
End Sub

试试这个:

Private Sub GridView1_ShowingEditor(sender As Object, e As System.ComponentModel.CancelEventArgs) Handles GridView1.ShowingEditor
    Dim view As GridView = TryCast(sender, GridView)
    If view.IsNewItemRow(view.FocusedRowHandle) Then
        view.OptionsBehavior.EditingMode = GridEditingMode.EditForm
    Else
        view.OptionsBehavior.EditingMode = GridEditingMode.Default
        e.Cancel = True
    End If
End Sub

或 VB.Net 中 Gosha_Fighten 的这个:

Private Sub GridView1_EditFormShowing(sender As Object, e As EditFormShowingEventArgs) Handles GridView1.EditFormShowing
    Dim view As GridView = TryCast(sender, GridView)
    e.Allow = view.IsNewItemRow(e.RowHandle)
End Sub

虽然Abdellah提供的方法可能有效,但不建议在网格即将编辑数据时切换网格编辑模式。相反,网格为此提供了一个专用事件。我建议你使用 GridView.EditFormShowing 事件来实现这个目标。该事件提供 e.Allow 和 e.RowHandle 以防止显示编辑表单并标识当前行。

private void gridView1_EditFormShowing(object sender, DevExpress.XtraGrid.Views.Grid.EditFormShowingEventArgs e) {
    GridView view = (GridView)sender;
    e.Allow = view.IsNewItemRow(e.RowHandle);
}