CLR: .Net / Mono / Boo / Otros CLR > VB .NET
Aparecer Un Panel En Determinadas Coordenadas
Bigpercynet:
Hola a todos,
Espero que estos les sea de utilidad. Realiza precisamente lo que buscais. Para obtener los valores del location de cualquier celda, simplemente lo que se hace es sumar cada uno de los valores de las propiedades left y top tanto del dataGridView como de las celdas adyacentes a la celda selecionada (incluye esta).
Apreciad el codigo:
private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
int x_i=e.ColumnIndex;
int y_i= e.RowIndex;
Text = e.ColumnIndex.ToString();
int margenX = 0;
int margenY = 0;
int margenXdataGridView = dataGridView1.Left;
int margenYdataGridView = dataGridView1.Top;
for (int i = 0; i <= e.ColumnIndex + 1; i++)
{
DataGridViewCell cell =dataGridView1.Rows[e.RowIndex].Cells;
dataGridView1.CurrentCell = cell;
margenX += dataGridView1.CurrentCell.Size.Width;
}
for (int i = 0; i <= e.RowIndex + 1; i++)
{
DataGridViewCell cell2 = dataGridView1.Rows.Cells[e.ColumnIndex];
dataGridView1.CurrentCell =cell2;
margenY += dataGridView1.CurrentCell.Size.Height;
}
int left = 0;
int top = 0;
left = margenXdataGridView + margenX;
top = margenYdataGridView + margenY;
checkBox1.Location = new Point(left - 60, top + 10);
DataGridViewCell cell3 = dataGridView1.Rows[x_i].Cells[y_i];
dataGridView1.CurrentCell = cell3;
}
Saludos,
Bigpercynet:
Hola de nuevo, solo queria decirles que el codigo en VB .NET es similar, para esta vez, solo hay que quitarles agregados como punto y comas, llaves... eso nada mas
Saludos,
Percy Reyes,
Cajami:
Hola, muchisimas gracias Bigpercynet y ElNapster, me salió aqui está el codigo en VB.Net, le he borrado algunas lineas :D :
--- Código: Text --- Private Sub DataGridView1_CellClick(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellClick If e.ColumnIndex = 0 Then Dim x_i As Integer = e.ColumnIndex Dim y_i As Integer = e.RowIndex Dim margenX As Integer = 0 Dim margenY As Integer = 0 Dim margenXdataGridView As Integer = DataGridView1.Left Dim margenYdataGridView As Integer = DataGridView1.Top For I As Integer = 0 To e.ColumnIndex + 1 margenX += DataGridView1.CurrentCell.Size.Width Next For I As Integer = 0 To e.RowIndex + 1 margenY += DataGridView1.CurrentCell.Size.Height Next Dim left As Integer = 0 Dim top As Integer = 0 left = margenXdataGridView + margenX top = margenYdataGridView + margenY Me.Mostrar_Datos.Visible = True Me.Mostrar_Datos.Location = New Point(left - 58, top) End If End Sub
Ahora se me ha metido algo en la mente, que pasa o mejor dicho si el dataGridView llega hasta el final del formulario y ps si uno hace clic en el ultimo formulario aparece en mi caso el panel no se ve todo osea o hacer para que si el panel no se mostrara todo que suba hasta que se muestre todo, adjunto una imagen para que se den cuenta
Cajami:
Hola, osea como hacer esto, vean la imagen, nos vemos :hola:
Nebire:
En otro mensaje donde te mandé un ejemplo ya aparece como obtener la posición del ratón... pero vamos a lo que solicitas...
Antes de mostrar el panel, debes calcular si cabe o no, es decir tomando la posición a colocar y sumando el tamaño del panel debes saber si es mayor que el tamaño del formulario, si es menor, perfecto, lo pintas, y si es mayor entonces debes restar el tamaño del panel y el tamaño de la celda.
Nota que debes hacer por separado el 'top' y el 'left'.
Saludos.
Navegación
[#] Página Siguiente
[*] Página Anterior
Ir a la versión completa