代码之家  ›  专栏  ›  技术社区  ›  x77

DataGridView.Editmode=编辑输入。如何选择要删除的行?

  •  4
  • x77  · 技术社区  · 14 年前

    当我使用EditMode=EditOnEnter时,当我选择行时,单元格将进入EditMode。

    你知道什么把戏吗?

    4 回复  |  直到 14 年前
        1
  •  12
  •   braX    5 年前

    如果用户单击行标题,请将EditMode更改为 EditOnKeystrokeOrF2 并结束编辑。

    EditOnEnter 然后开始编辑。


    Private Sub dgv2_CellClick(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles dgv2.CellClick
        If e.ColumnIndex = -1 Then
           dgv2.EditMode = DataGridViewEditMode.EditOnKeystrokeOrF2
           dgv2.EndEdit()
        ElseIf dgv2.EditMode <> DataGridViewEditMode.EditOnEnter Then
           dgv2.EditMode = DataGridViewEditMode.EditOnEnter
           dgv2.BeginEdit(False)
        End If
    End Sub
    
        2
  •  1
  •   STO    14 年前

    用户可以按Escape键取消编辑模式,然后可以删除行。也可以选择其他DataGridViewEditMode(请参阅 http://msdn.microsoft.com/en-us/library/system.windows.forms.datagridvieweditmode.aspx )例如DataGridViewEditMode.EditOnKeystroke或EditOnKeystrokeOrF2,从可用性的角度来看,这两种方法都很好。

        3
  •  0
  •   whistle britches    10 年前

    这真的需要在MouseDown上完成。鼠标上触发单元格单击事件:

    Private Sub ProductsGrid_MouseDown(sender As Object, e As MouseEventArgs) Handles ProductsGrid.MouseDown
        Dim grid = DirectCast(sender, DataGridView)
        Dim info = grid.HitTest(e.X, e.Y)
    
        If into.Type = DataGridViewHitTestType.RowHeader OrElse info.Type = DataGridViewHitTestType.TopLeftHeader Then
            grid.EditMode = DataGridViewEditMode.EditOnKeystrokeOrF2
            grid.EndEdit()
        ElseIf grid.EditMode <> DataGridViewEditMode.EditOnEnter Then
            grid.EditMode = DataGridViewEditMode.EditOnEnter
        End If
    End Sub
    

    还需要做更多的工作,包括处理Tab键行为。这种行为(以及上面的修改)最好在继承DataGridView的用户控件中完成。

        4
  •  0
  •   DaNieL    9 年前

    可以将焦点更改为父控件。这将强制单元格结束编辑,而不必更改模式本身。

    例如,如果选择多个单元格,则此代码段将离开编辑模式。

    protected override void OnSelectionChanged(EventArgs e)
    {
        base.OnSelectionChanged(e);
    
        if (SelectedCells.Count > 1)
        {
            // leave edit mode
            Parent?.Focus();
        }
    }