CLR: .Net / Mono / Boo / Otros CLR > VB .NET

 Aparecer Un Panel En Determinadas Coordenadas

<< < (2/3) > >>

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

[0] Índice de Mensajes

[#] Página Siguiente

[*] Página Anterior

Ir a la versión completa