Guest User

Untitled

a guest
Mar 23rd, 2018
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.19 KB | None | 0 0
  1. private void dgrid_planificacion_CellClick(object sender, DataGridViewCellEventArgs e)
  2. {
  3. //Obetengo las coordenadas de la celda seleccionada.
  4. Rectangle coordenada = dgrid_planificacion.GetCellDisplayRectangle(dgrid_planificacion.CurrentCell.ColumnIndex, dgrid_planificacion.CurrentCell.RowIndex, false);
  5.  
  6. if (e.ColumnIndex > 1)
  7. {
  8. int ancho_grid, alto_grid, ancho_panel, alto_panel, ancho_celda, alto_celda;
  9.  
  10. ancho_grid = dgrid_planificacion.Size.Width;
  11. alto_grid = dgrid_planificacion.Size.Height;
  12.  
  13. ancho_panel = panel_detalle.Size.Width;
  14. alto_panel = panel_detalle.Size.Height;
  15.  
  16. ancho_celda = coordenada.Location.X;
  17. alto_celda = coordenada.Location.Y;
  18.  
  19. if (!Convert.ToString(dgrid_planificacion.CurrentRow.Cells[0].Value).Equals(""))
  20. {
  21.  
  22. //Ezquina superior izquierda.
  23. if (( alto_panel + alto_celda ) < ( alto_grid ) && ( ancho_panel + ancho_celda ) < ancho_grid)
  24. {
  25. //El numero 14 es para indicarle la posicion que tendra el panel en el eje Y (comienzo de la celda)
  26. panel_detalle.Location = new Point(( ancho_celda + dgrid_planificacion.Location.X ),
  27. ( alto_celda + dgrid_planificacion.Location.Y ) + 14);
  28.  
  29. panel_detalle.BringToFront(); //Para que el panel este por arriba del DatagridView Planificacion
  30. panel_detalle.Visible = true;
  31. }
  32. else
  33. //Esquina Superior Derecha
  34. if (( alto_panel + alto_celda ) < ( alto_grid ))
  35. {
  36. //El numero 2 es para controlar la sepacion del panel de la celda.
  37. panel_detalle.Location = new Point(( ancho_celda - ancho_panel ) + 33,
  38. ( coordenada.Bottom ) - 2);
  39. panel_detalle.BringToFront();
  40. panel_detalle.Visible = true;
  41. }
  42. else
  43. //Esquina Inferior Izquierda
  44. if (( coordenada.Bottom + alto_panel ) > ( alto_grid ) && ( ancho_panel + ancho_celda ) < ( ancho_grid ))
  45. {
  46. panel_detalle.Location = new Point(( ancho_celda + dgrid_planificacion.Location.X ),
  47. ( alto_celda - alto_panel ) + 1);
  48. panel_detalle.BringToFront();
  49. panel_detalle.Visible = true;
  50. }
  51. else //Esquina Inferior Derecha
  52. {
  53. //El numero 33 indicar el comienzo de la celda y mostrar el panel en esa posicion.
  54. panel_detalle.Location = new Point(( ancho_celda - ancho_panel ) + 33,
  55. ( alto_celda - alto_panel ));
  56. panel_detalle.BringToFront();
  57. panel_detalle.Visible = true;
  58. }
  59. }
  60. else
  61. panel_detalle.Visible = false;
  62. }
  63. }
Add Comment
Please, Sign In to add comment