如何通过数据网格中的删除按钮删除所选行
本文关键字:删除 按钮 何通过 数据 数据网 网格 | 更新日期: 2023-09-27 18:28:44
可能重复:
如何使用删除按钮从datagridview中删除行?
我有System.Windows.Forms.DataGrid。如何通过单击删除按钮删除所选行?选定的行,而不是当光标在单元格中时!!!!!
若我单击选定行上的删除键,它会立即删除该行。我想在这里显示对话框来确认。
谢谢!
这是一个代码,它将引发一个事件,让您知道用户将要删除一行。
Public Class ConfirmDeleteDataGrid
Inherits DataGrid
Public Event DeletedRow(ByVal sender As Object, ByVal e As EventArgs)
Private Const WM_KEYDOWN = &H100
Public Overrides Function PreProcessMessage(ByRef msg As
System.Windows.Forms.Message) As Boolean
Dim keyCode As Keys = CType((msg.WParam.ToInt32 And Keys.KeyCode), Keys)
If msg.Msg = WM_KEYDOWN And keyCode = Keys.Delete Then
If MessageBox.Show("Delete This Row?", "Confirm Delete", _
MessageBoxButtons.YesNo) = DialogResult.No Then
Return True
Else
RaiseEvent DeletedRow(Me, New EventArgs)
End If
End If
Return MyBase.PreProcessMessage(msg)
End Function
Protected Overrides Function ProcessDialogKey(ByVal keyData As
System.Windows.Forms.Keys) As Boolean
Dim pt As Point
Dim hti As DataGrid.HitTestInfo
pt = Me.PointToClient(Cursor.Position)
hti = Me.HitTest(pt)
If keyData = Keys.Delete Then
If hti.Type = Me.HitTestType.RowHeader Then
If MessageBox.Show("Delete this row?", "Confirm Delete", _
MessageBoxButtons.YesNo) = DialogResult.No Then
Return True
Else
RaiseEvent DeletedRow(Me, New EventArgs)
End If
End If
End If
Return MyBase.ProcessDialogKey(keyData)
End Function
Protected Overrides Sub OnMouseDown(ByVal e As
System.Windows.Forms.MouseEventArgs)
Dim hti As DataGrid.HitTestInfo = Me.HitTest(New Point(e.X, e.Y))
If hti.Type = DataGrid.HitTestType.ColumnResize Or hti.Type =
DataGrid.HitTestType.RowResize Then
Return 'no baseclass call
End If
MyBase.OnMouseDown(e)
End Sub
Public Sub New()
Trace.WriteLine(Me.VertScrollBar.Visible.ToString)
End Sub
Protected Overrides Sub OnMouseMove(ByVal e As
System.Windows.Forms.MouseEventArgs)
Dim hti As DataGrid.HitTestInfo = Me.HitTest(New Point(e.X, e.Y))
If hti.Type = DataGrid.HitTestType.ColumnResize Or hti.Type =
DataGrid.HitTestType.RowResize Then
Return 'no baseclass call
End If
MyBase.OnMouseMove(e)
End Sub
End Class