Live Chat Icon For mobile
Live Chat Icon

How can I put up a confirmation question when the user tries to delete a row in the datagrid by clicking on the row header and pressing the Delete key

Platform: WinForms| Category: Datagrid

You can handle this by subclassing your grid and overriding either PreProcessMessage or ProcessDialogKey. The code below assumes your datasource is a dataview. If it is not, you could just remove that check

[C#]
public override bool PreProcessMessage( ref Message msg )
{
	Keys keyCode = (Keys)(int)msg.WParam & Keys.KeyCode;
	if(msg.Msg == WM_KEYDOWN 
		&& keyCode == Keys.Delete
		&& ((DataView) this.DataSource).AllowDelete)
	{
		if(MessageBox.Show('Delete this row?', '', MessageBoxButtons.YesNo) == DialogResult.No)
			return true;
	} 
	return base.PreProcessMessage(ref msg);
}

[VB.NET] (courtesy of Erik Johansen)
Public Class DataGrid_Custom
	Inherits DataGrid

	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
			End If
		End If
		Return MyBase.PreProcessMessage(msg)

	End Function
End Class

Share with

Share on twitter
Share on facebook
Share on linkedin

Related FAQs

Couldn't find the FAQs you're looking for?

Please submit your question and answer.