.net - ultima - Haga clic con el botón derecho para seleccionar una fila de datagridview
seleccionar una fila de un datagridview asp net (6)
Lo bueno es agregar un menú en ese clic derecho, por ejemplo con opciones como "Ver información del cliente", "Verificar últimas facturas", "Agregar una entrada de registro a este cliente", etc.
solo necesita agregar un objeto ContextMenuStrip, agregar las entradas de menú y, en las propiedades de DataGridView, simplemente seleccione ContextMenuStrip.
Esto crearía un nuevo menú en la fila en la que el usuario hizo clic con todas las opciones, entonces todo lo que necesitas hacer es crear tu magia :)
recuerde que necesita el código JvR para obtener la fila en la que estaba el usuario, luego tome la celda que contiene la ID del cliente, por ejemplo, y pase esa información.
Espero que ayude a mejorar tu aplicación
¿Cómo se selecciona una fila de datagridview haciendo clic con el botón derecho?
Puede usar el código de JvR en el evento MouseDown de su DataGridView.
Subclase el DataGridView
y cree un evento MouseDown
para la grilla,
private void SubClassedGridView_MouseDown(object sender, MouseEventArgs e)
{
// Sets is so the right-mousedown will select a cell
DataGridView.HitTestInfo hti = this.HitTest(e.X, e.Y);
// Clear all the previously selected rows
this.ClearSelection();
// Set as selected
this.Rows[hti.RowIndex].Selected = true;
}
// Clear all the previously selected rows
foreach (DataGridViewRow row in yourDataGridView.Rows)
{
row.Selected = false;
}
// Get the selected Row
DataGridView.HitTestInfo info = yourDataGridView.HitTest( e.X, e.Y );
// Set as selected
yourDataGridView.Rows[info.RowIndex].Selected = true;
Haz que se comporte de manera similar al botón izquierdo del mouse? p.ej
private void dataGridView_CellMouseDown(object sender, DataGridViewCellMouseEventArgs e)
{
if (e.Button == MouseButtons.Right)
{
dataGridView.CurrentCell = dataGridView[e.ColumnIndex, e.RowIndex];
}
}
Tienes que hacer dos cosas:
Borre todas las filas y seleccione la actual.
i = e.RowIndex
todas las filas y uso Bool Expressioni = e.RowIndex
para estoSi has hecho el Paso 1, todavía tienes una gran trampa:
DataGridView1.CurrentRow no devuelve la fila seleccionada previamente (lo cual es bastante peligroso). Como CurrentRow es Readonly, tienes que hacerMe.CurrentCell = Me.Item(e.ColumnIndex, e.RowIndex)
Protected Overrides Sub OnCellMouseDown( ByVal e As System.Windows.Forms.DataGridViewCellMouseEventArgs) MyBase.OnCellMouseDown(e) Select Case e.Button Case Windows.Forms.MouseButtons.Right If Me.Rows(e.RowIndex).Selected = False Then For i As Integer = 0 To Me.RowCount - 1 SetSelectedRowCore(i, i = e.RowIndex) Next End If Me.CurrentCell = Me.Item(e.ColumnIndex, e.RowIndex) End Select End Sub