Vb.net 如何防止在DevXPress中不添加新行时打开编辑表单

Vb.net 如何防止在DevXPress中不添加新行时打开编辑表单,vb.net,gridview,devexpress,Vb.net,Gridview,Devexpress,我在Devexpress中有这个gridview。我有一个弹出的编辑表单,可以打开 当我要添加新行时。但是,我想阻止弹出窗体 在尝试编辑行时打开 我已经尝试过处理鼠标按下和双击事件,但我仍然得到了成功 随时都会出现 Private Sub gvMFFSeries_MouseDown(sender As Object, e As MouseEventArgs) Handles gvMFFSeries.MouseDown Dim view As GridView = TryCast(

我在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提供的方法可能有效,但不建议在网格即将编辑数据时切换网格编辑模式。相反,网格为此提供了一个专用事件。我建议你利用这次活动来实现这个目标。事件提供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);
}

你还需要添加新行吗?是的,我需要能够添加新行。但是使用内联编辑?不,编辑发生在弹出式编辑表单中。啊,你只想添加新行,而不想编辑现有行吗?再次@Abdellah你解决了我的问题!再次感谢!很好,听到这个消息我很高兴!哦,事实上,我现在看到了,我可以直接编辑网格(没有弹出窗口)。我想禁用编辑功能。您必须在
Else
bloc-like答案中添加:
e.Cancel=True
。是@天哪,你说得对,回答得好。我投了一票;如果你允许,我会回答并把它放在vb.net.sure@AbdellahOUMGHARThanks@Gosha_Fighten!您能否向我们提供更多关于为什么这样更好的细节?@Eric EditFormShowing活动是为您的任务而专门设计的。更改网格编辑模式会导致更改编辑策略。这些策略需要特定的事件生命周期。因此,在这个周期的中间改变策略可能导致不正确的电网运行。