Información en int, hex y bin dentro de un Form

Iniciado por Meta, 20 Agosto 2014, 09:14 AM

0 Miembros y 1 Visitante están viendo este tema.

Meta

Añado tres label en el Form, como indica en la imagen de abajo en cuadro rojo.
Según pinche en los píxeles que en realidad cada cuadrado es un pictureBoxse vaya actualizando los datos int, hex y binario.

El código que he hecho hasta ahora es este, pero no he puesto aún los label.

Código (csharp) [Seleccionar]

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace LCD_HD44780
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button_5x8_Rellenar_Click(object sender, EventArgs e)
        {
            pictureBox1.BackColor = Color.Black;
            pictureBox2.BackColor = Color.Black;
            pictureBox3.BackColor = Color.Black;
            pictureBox4.BackColor = Color.Black;
            pictureBox5.BackColor = Color.Black;
            pictureBox6.BackColor = Color.Black;
            pictureBox7.BackColor = Color.Black;
            pictureBox8.BackColor = Color.Black;
            pictureBox9.BackColor = Color.Black;
            pictureBox10.BackColor = Color.Black;
            pictureBox11.BackColor = Color.Black;
            pictureBox12.BackColor = Color.Black;
            pictureBox13.BackColor = Color.Black;
            pictureBox14.BackColor = Color.Black;
            pictureBox15.BackColor = Color.Black;
            pictureBox16.BackColor = Color.Black;
            pictureBox17.BackColor = Color.Black;
            pictureBox18.BackColor = Color.Black;
            pictureBox19.BackColor = Color.Black;
            pictureBox20.BackColor = Color.Black;
            pictureBox21.BackColor = Color.Black;
            pictureBox22.BackColor = Color.Black;
            pictureBox23.BackColor = Color.Black;
            pictureBox24.BackColor = Color.Black;
            pictureBox25.BackColor = Color.Black;
            pictureBox26.BackColor = Color.Black;
            pictureBox27.BackColor = Color.Black;
            pictureBox28.BackColor = Color.Black;
            pictureBox29.BackColor = Color.Black;
            pictureBox30.BackColor = Color.Black;
            pictureBox31.BackColor = Color.Black;
            pictureBox32.BackColor = Color.Black;
            pictureBox33.BackColor = Color.Black;
            pictureBox34.BackColor = Color.Black;
            pictureBox35.BackColor = Color.Black;
        }

        private void button_5x7_Limpiar_Click(object sender, EventArgs e)
        {
            pictureBox1.BackColor = Color.Lime;
            pictureBox2.BackColor = Color.Lime;
            pictureBox3.BackColor = Color.Lime;
            pictureBox4.BackColor = Color.Lime;
            pictureBox5.BackColor = Color.Lime;
            pictureBox6.BackColor = Color.Lime;
            pictureBox7.BackColor = Color.Lime;
            pictureBox8.BackColor = Color.Lime;
            pictureBox9.BackColor = Color.Lime;
            pictureBox10.BackColor = Color.Lime;
            pictureBox11.BackColor = Color.Lime;
            pictureBox12.BackColor = Color.Lime;
            pictureBox13.BackColor = Color.Lime;
            pictureBox14.BackColor = Color.Lime;
            pictureBox15.BackColor = Color.Lime;
            pictureBox16.BackColor = Color.Lime;
            pictureBox17.BackColor = Color.Lime;
            pictureBox18.BackColor = Color.Lime;
            pictureBox19.BackColor = Color.Lime;
            pictureBox20.BackColor = Color.Lime;
            pictureBox21.BackColor = Color.Lime;
            pictureBox22.BackColor = Color.Lime;
            pictureBox23.BackColor = Color.Lime;
            pictureBox24.BackColor = Color.Lime;
            pictureBox25.BackColor = Color.Lime;
            pictureBox26.BackColor = Color.Lime;
            pictureBox27.BackColor = Color.Lime;
            pictureBox28.BackColor = Color.Lime;
            pictureBox29.BackColor = Color.Lime;
            pictureBox30.BackColor = Color.Lime;
            pictureBox31.BackColor = Color.Lime;
            pictureBox32.BackColor = Color.Lime;
            pictureBox33.BackColor = Color.Lime;
            pictureBox34.BackColor = Color.Lime;
            pictureBox35.BackColor = Color.Lime;
        }

        private void pictureBox1_Click(object sender, EventArgs e)
        {
            if (pictureBox1.BackColor == Color.Black)
            {
                pictureBox1.BackColor = Color.Lime;
            }

            else
            {
                pictureBox1.BackColor = Color.Black;
            }
        }

        private void pictureBox2_Click(object sender, EventArgs e)
        {
            if (pictureBox2.BackColor == Color.Black)
            {
                pictureBox2.BackColor = Color.Lime;
            }

            else
            {
                pictureBox2.BackColor = Color.Black;
            }
        }

        private void pictureBox3_Click(object sender, EventArgs e)
        {
            if (pictureBox3.BackColor == Color.Black)
            {
                pictureBox3.BackColor = Color.Lime;
            }

            else
            {
                pictureBox3.BackColor = Color.Black;
            }
        }

        private void pictureBox4_Click(object sender, EventArgs e)
        {
            if (pictureBox4.BackColor == Color.Black)
            {
                pictureBox4.BackColor = Color.Lime;
            }

            else
            {
                pictureBox4.BackColor = Color.Black;
            }
        }

        private void pictureBox5_Click(object sender, EventArgs e)
        {
            if (pictureBox5.BackColor == Color.Black)
            {
                pictureBox5.BackColor = Color.Lime;
            }

            else
            {
                pictureBox5.BackColor = Color.Black;
            }
        }

        private void pictureBox6_Click(object sender, EventArgs e)
        {
            if (pictureBox6.BackColor == Color.Black)
            {
                pictureBox6.BackColor = Color.Lime;
            }

            else
            {
                pictureBox6.BackColor = Color.Black;
            }
        }

        private void pictureBox7_Click(object sender, EventArgs e)
        {
            if (pictureBox7.BackColor == Color.Black)
            {
                pictureBox7.BackColor = Color.Lime;
            }

            else
            {
                pictureBox7.BackColor = Color.Black;
            }
        }

        private void pictureBox8_Click(object sender, EventArgs e)
        {
            if (pictureBox8.BackColor == Color.Black)
            {
                pictureBox8.BackColor = Color.Lime;
            }

            else
            {
                pictureBox8.BackColor = Color.Black;
            }
        }

        private void pictureBox9_Click(object sender, EventArgs e)
        {
            if (pictureBox9.BackColor == Color.Black)
            {
                pictureBox9.BackColor = Color.Lime;
            }

            else
            {
                pictureBox9.BackColor = Color.Black;
            }
        }

        private void pictureBox10_Click(object sender, EventArgs e)
        {
            if (pictureBox10.BackColor == Color.Black)
            {
                pictureBox10.BackColor = Color.Lime;
            }

            else
            {
                pictureBox10.BackColor = Color.Black;
            }
        }

        private void pictureBox11_Click(object sender, EventArgs e)
        {
            if (pictureBox11.BackColor == Color.Black)
            {
                pictureBox11.BackColor = Color.Lime;
            }

            else
            {
                pictureBox11.BackColor = Color.Black;
            }
        }

        private void pictureBox12_Click(object sender, EventArgs e)
        {
            if (pictureBox12.BackColor == Color.Black)
            {
                pictureBox12.BackColor = Color.Lime;
            }

            else
            {
                pictureBox12.BackColor = Color.Black;
            }
        }

        private void pictureBox13_Click(object sender, EventArgs e)
        {
            if (pictureBox13.BackColor == Color.Black)
            {
                pictureBox13.BackColor = Color.Lime;
            }

            else
            {
                pictureBox13.BackColor = Color.Black;
            }
        }

        private void pictureBox14_Click(object sender, EventArgs e)
        {
            if (pictureBox14.BackColor == Color.Black)
            {
                pictureBox14.BackColor = Color.Lime;
            }

            else
            {
                pictureBox14.BackColor = Color.Black;
            }
        }

        private void pictureBox15_Click(object sender, EventArgs e)
        {
            if (pictureBox15.BackColor == Color.Black)
            {
                pictureBox15.BackColor = Color.Lime;
            }

            else
            {
                pictureBox15.BackColor = Color.Black;
            }
        }

        private void pictureBox16_Click(object sender, EventArgs e)
        {
            if (pictureBox16.BackColor == Color.Black)
            {
                pictureBox16.BackColor = Color.Lime;
            }

            else
            {
                pictureBox16.BackColor = Color.Black;
            }
        }

        private void pictureBox17_Click(object sender, EventArgs e)
        {
            if (pictureBox17.BackColor == Color.Black)
            {
                pictureBox17.BackColor = Color.Lime;
            }

            else
            {
                pictureBox17.BackColor = Color.Black;
            }
        }

        private void pictureBox18_Click(object sender, EventArgs e)
        {
            if (pictureBox18.BackColor == Color.Black)
            {
                pictureBox18.BackColor = Color.Lime;
            }

            else
            {
                pictureBox18.BackColor = Color.Black;
            }
        }

        private void pictureBox19_Click(object sender, EventArgs e)
        {
            if (pictureBox19.BackColor == Color.Black)
            {
                pictureBox19.BackColor = Color.Lime;
            }

            else
            {
                pictureBox19.BackColor = Color.Black;
            }
        }

        private void pictureBox20_Click(object sender, EventArgs e)
        {
            if (pictureBox20.BackColor == Color.Black)
            {
                pictureBox20.BackColor = Color.Lime;
            }

            else
            {
                pictureBox20.BackColor = Color.Black;
            }
        }

        private void pictureBox21_Click(object sender, EventArgs e)
        {
            if (pictureBox21.BackColor == Color.Black)
            {
                pictureBox21.BackColor = Color.Lime;
            }

            else
            {
                pictureBox21.BackColor = Color.Black;
            }
        }

        private void pictureBox22_Click(object sender, EventArgs e)
        {
            if (pictureBox22.BackColor == Color.Black)
            {
                pictureBox22.BackColor = Color.Lime;
            }

            else
            {
                pictureBox22.BackColor = Color.Black;
            }
        }

        private void pictureBox23_Click(object sender, EventArgs e)
        {
            if (pictureBox23.BackColor == Color.Black)
            {
                pictureBox23.BackColor = Color.Lime;
            }

            else
            {
                pictureBox23.BackColor = Color.Black;
            }
        }

        private void pictureBox24_Click(object sender, EventArgs e)
        {
            if (pictureBox24.BackColor == Color.Black)
            {
                pictureBox24.BackColor = Color.Lime;
            }

            else
            {
                pictureBox24.BackColor = Color.Black;
            }
        }

        private void pictureBox25_Click(object sender, EventArgs e)
        {
            if (pictureBox25.BackColor == Color.Black)
            {
                pictureBox25.BackColor = Color.Lime;
            }

            else
            {
                pictureBox25.BackColor = Color.Black;
            }
        }

        private void pictureBox26_Click(object sender, EventArgs e)
        {
            if (pictureBox26.BackColor == Color.Black)
            {
                pictureBox26.BackColor = Color.Lime;
            }

            else
            {
                pictureBox26.BackColor = Color.Black;
            }
        }

        private void pictureBox27_Click(object sender, EventArgs e)
        {
            if (pictureBox27.BackColor == Color.Black)
            {
                pictureBox27.BackColor = Color.Lime;
            }

            else
            {
                pictureBox27.BackColor = Color.Black;
            }
        }

        private void pictureBox28_Click(object sender, EventArgs e)
        {
            if (pictureBox28.BackColor == Color.Black)
            {
                pictureBox28.BackColor = Color.Lime;
            }

            else
            {
                pictureBox28.BackColor = Color.Black;
            }
        }

        private void pictureBox29_Click(object sender, EventArgs e)
        {
            if (pictureBox29.BackColor == Color.Black)
            {
                pictureBox29.BackColor = Color.Lime;
            }

            else
            {
                pictureBox29.BackColor = Color.Black;
            }
        }

        private void pictureBox30_Click(object sender, EventArgs e)
        {
            if (pictureBox30.BackColor == Color.Black)
            {
                pictureBox30.BackColor = Color.Lime;
            }

            else
            {
                pictureBox30.BackColor = Color.Black;
            }
        }

        private void pictureBox31_Click(object sender, EventArgs e)
        {
            if (pictureBox31.BackColor == Color.Black)
            {
                pictureBox31.BackColor = Color.Lime;
            }

            else
            {
                pictureBox31.BackColor = Color.Black;
            }
        }

        private void pictureBox32_Click(object sender, EventArgs e)
        {
            if (pictureBox32.BackColor == Color.Black)
            {
                pictureBox32.BackColor = Color.Lime;
            }

            else
            {
                pictureBox32.BackColor = Color.Black;
            }
        }

        private void pictureBox33_Click(object sender, EventArgs e)
        {
            if (pictureBox33.BackColor == Color.Black)
            {
                pictureBox33.BackColor = Color.Lime;
            }

            else
            {
                pictureBox33.BackColor = Color.Black;
            }
        }

        private void pictureBox34_Click(object sender, EventArgs e)
        {
            if (pictureBox34.BackColor == Color.Black)
            {
                pictureBox34.BackColor = Color.Lime;
            }

            else
            {
                pictureBox34.BackColor = Color.Black;
            }
        }

        private void pictureBox35_Click(object sender, EventArgs e)
        {
            if (pictureBox35.BackColor == Color.Black)
            {
                pictureBox35.BackColor = Color.Lime;
            }

            else
            {
                pictureBox35.BackColor = Color.Black;
            }
        }
    }
}



¿Cuál es la mejor forma de codearlo?


Saludo.
Tutoriales Electrónica y PIC: http://electronica-pic.blogspot.com/

seba123neo

la mejor forma es hacer todo dinamico en tiempo de ejecucion.

o sea crear los controles "al vuelo" y asignarle sus eventos, sino te queda un monton de codigo.

creas los picturebox con un simple bucle for de 1 a 50 o lo que sea, ahi vas creandolos y posicionando en el form, luego le creas un addhandler para el evento click de cada uno, y todos los clicks van a entrar por el mismo manejador del evento.

te quedaria un codigo de no mas de 20 lineas para todo y el dia que quieras agregar mas controles no te va a afectar en nada.

la segunda opcion y mas "profesional" digamos es hacerlo "sin controles en absoluto", tendrias que "pintar" los cuadrados en el form, y el evento mousemove y click del form se encargaria de reconocer el color, etc.. te quedaria mas chico el codigo todavia y sin obejetos.

cualquiera de las 2 opciones es facil.

saludos.
La característica extraordinaria de las leyes de la física es que se aplican en todos lados, sea que tú elijas o no creer en ellas. Lo bueno de las ciencias es que siempre tienen la verdad, quieras creerla o no.

Neil deGrasse Tyson

Meta

Hola:

Gracias por responder, pero las opciones se me escapa de mis conocimientos. Voy haber si lo pillo. Quiero crear 35 pictureBox, me imagino que con un for se podrá hacer.
Código (csharp) [Seleccionar]
        for (int i = 1; i <= 5; i++)
        {
            Console.WriteLine(i);
        }


Por ahora, el como lo tengo hecho a pesar de tener mucho código, no me importa, pensando bien. Quiero continuar una cosa que no me sale.



Fijándome justo la imagen de arriba, al pinchar los pictureBox quiero que aparezcan en tiempo real los resultados en Decimales, Hexadecimales y Binarios. El tiempo real quiero decir, que desde que pulse un pictureBox, se actualiza los datos dentro de los textBox inficado arriba. Con usar timer de 0.1 segundo funciona en vez de usar un botón para actualizar.

Espero que se entienda lo que quiero hacer. Esta parte si que no me sale.

Saludo.
Tutoriales Electrónica y PIC: http://electronica-pic.blogspot.com/

Eleкtro

#3
Cita de: Meta en 20 Agosto 2014, 09:14 AM¿Cuál es la mejor forma de codearlo?[/b]

Pues hombre... agregar 35 controles y usar 35 event-handlers para suscribirte al mismo evento desde luego que no es lo más eficiente, se puede reducir mucho el código para que sea siendo dinámico como dijo el compañero seba123neo, pero seguiría habiendo 35 controles en la UI, hay otras formas de hacerlo de forma dinámica (como también te explicó seba123neo).

Mi consejo:

1. Utiliza solo 1 picturebox de fondo, y para todo lo demás utiliza las classes de GDI+.

2. Dibuja una rejilla del tamaño deseado sobre el picturebox, con las columnas y filas deseadas, en el evento Paint del picturebox.

3. Crea 1 Rectangle por cada sector de la rejilla, y así ya tienes una referencia de cada sector de la rejilla con su respectiva localización y tamaño a la que puedes acceder en cualquier momento.

4. En este punto ya se supone que deberías haber obtenido una coleción de los sectores de la rejilla( te sugiero añadirlos a una List(Of Rectangle) ),
   así que solo tienes que suscribirte a los eventos del Mouse (MouseMove y MouseClick) del PictureBox donde harás las operaciones necesarias (como por ejemplo especificar en que sector de la rejilla se hizo click, y el color despues de hacer click, etc), fin del problema.


Te muestro un ejemplo:



En ese ejemplo solo utilicé 1 picturebox con el fondo negro (aunque un picturebox tampoco es totalmente necesario pero facilita un poco la tarea), dibujé la rejilla con Pens, y para todo lo demás utilicé Rectangle, siguiendo los pasos que te he explicado.






No voy a mostrar todo el trabajo porque la idea es que aprendas a hacerlo pro ti mismo, y además, yo lo hice en VB.NET, peor te dejo una ayudita por si te sirve (lo puedes traducir a C# en convertidores online):

Este método lo escribí para dibujar los márgenes del grid (lo debes utilizar en el evento Paint):

Código (vbnet) [Seleccionar]
   ' Draw Grid
   ' By Elektro
   '
   ''' <summary>
   ''' Draws a grid in the specified <see cref="System.Drawing.Graphics"/> space.
   ''' </summary>
   ''' <param name="g">Indicates the <see cref="System.Drawing.Graphics"/> object.</param>
   ''' <param name="GridSize">Indicates the size of the grid.</param>
   ''' <param name="Columns">Indicates the amount of columns to draw.</param>
   ''' <param name="Rows">Indicates the amount of rows to draw.</param>
   ''' <param name="ColorColumns">Indicates the columns color.</param>
   ''' <param name="ColorRows">Indicates the rows color.</param>
   ''' <param name="DrawBorder">If set to <c>true</c>, a border is drawn on the grid edges.</param>
   ''' <param name="ColorBorder">Indicates the border color. Default value is the same color as <param ref="ColorColumns"/></param>
   ''' <param name="ColorStyle">Indicates the colors <see cref="System.Drawing.Drawing2D.DashStyle"/>.</param>
   ''' <exception cref="System.ArgumentException">
   ''' GridSize.Width is not divisible by the specified number of columns.
   ''' or
   ''' GridSize.Height is not divisible by the specified number of rows.
   ''' </exception>
   Private Sub DrawGrid(ByVal g As Graphics,
                        ByVal GridSize As Size,
                        ByVal Columns As Integer,
                        ByVal Rows As Integer,
                        ByVal ColorColumns As Color,
                        ByVal ColorRows As Color,
                        Optional ByVal DrawBorder As Boolean = True,
                        Optional ByVal ColorBorder As Color = Nothing,
                        Optional ByVal ColorStyle As Drawing2D.DashStyle = Drawing2D.DashStyle.Solid)

       If Not (GridSize.Width Mod Columns = 0I) Then
           Throw New ArgumentException(
               "GridSize.Width is not divisible by the specified number of columns.",
               "GridSize")
           Exit Sub

       ElseIf Not (GridSize.Height Mod Rows = 0I) Then
           Throw New ArgumentException(
               "GridSize.Height is not divisible by the specified number of rows.",
               "GridSize")
           Exit Sub

       End If

       Dim SectorWidth As Integer = (GridSize.Width \ Columns)
       Dim SectorHeight As Integer = (GridSize.Height \ Rows)

       Using PenRow As New Pen(ColorRows) With {.DashStyle = ColorStyle}

           Using PenCol As New Pen(ColorColumns) With {.DashStyle = ColorStyle}

               For row As Integer = 0I To GridSize.Height - 1 Step (SectorHeight)

                   For col As Integer = 0I To GridSize.Width - 1 Step SectorWidth

                       ' Draw the vertical grid-lines.
                       g.DrawLine(PenCol,
                                  New Point(x:=col - 1, y:=0I),
                                  New Point(x:=col - 1, y:=GridSize.Height))

                   Next col

                   ' Draw the horizontal grid-lines.
                   g.DrawLine(PenRow,
                              New Point(x:=0I, y:=row - 1),
                              New Point(x:=GridSize.Width, y:=row - 1))

               Next row

               If DrawBorder Then

                   Using PenBorder As New Pen(If(ColorBorder = Nothing, ColorColumns, ColorBorder)) With {.DashStyle = ColorStyle}

                       ' Draw the vertical left grid-line.
                       g.DrawLine(PenBorder,
                                  New Point(x:=0, y:=0I),
                                  New Point(x:=0, y:=GridSize.Height))

                       ' Draw the vertical right grid-line.
                       g.DrawLine(PenBorder,
                                  New Point(x:=(GridSize.Width - 1I), y:=0I),
                                  New Point(x:=(GridSize.Width - 1I), y:=GridSize.Height))

                       ' Draw the horizontal top grid-line.
                       g.DrawLine(PenBorder,
                                  New Point(x:=0I, y:=0I),
                                  New Point(x:=GridSize.Width, y:=0I))

                       ' Draw the horizontal bottom grid-line.
                       g.DrawLine(PenBorder,
                                  New Point(x:=0I, y:=(GridSize.Height - 1I)),
                                  New Point(x:=GridSize.Width, y:=(GridSize.Height - 1I)))
                   End Using ' PenBorder

               End If ' DrawBorder

           End Using '  PenCol

       End Using ' PenRow

   End Sub



Y este método lo escribí para obtener los rectangles de la rejilla:

Código (vbnet) [Seleccionar]
   ' Get Grid
   ' By Elektro
   '
   ''' <summary>
   ''' Calculates the drawing of a grid with the specified size,
   ''' and returns a<see cref="List(Of Rectangle)"/> that contains the grid-sector specifications.
   ''' </summary>
   ''' <param name="GridSize">Indicates the grid size.</param>
   ''' <param name="Columns">Indicates the amount of columns.</param>
   ''' <param name="Rows">Indicates the amount of rows.</param>
   ''' <returns>A <see cref="List(Of Rectangle)"/> that contains the grid-sector specifications.</returns>
   ''' <exception cref="System.ArgumentException">
   ''' GridSize.Width is not divisible by the specified number of columns.
   ''' or
   ''' GridSize.Height is not divisible by the specified number of rows.
   ''' </exception>
   Private Function GetGrid(ByVal GridSize As Size,
                            ByVal Columns As Integer,
                            ByVal Rows As Integer) As List(Of Rectangle)

       If Not (GridSize.Width Mod Columns = 0I) Then
           Throw New ArgumentException(
               "GridSize.Width is not divisible by the specified number of columns.",
               "GridSize")
           Return Nothing

       ElseIf Not (GridSize.Height Mod Rows = 0I) Then
           Throw New ArgumentException(
               "GridSize.Height is not divisible by the specified number of rows.",
               "GridSize")
           Return Nothing

       End If

       Dim Sectors As New List(Of Rectangle)
       Dim SectorWidth As Integer = GridSize.Width \ Columns
       Dim SectorHeight As Integer = GridSize.Height \ Rows

       For row As Integer = 0I To GridSize.Height - 1 Step (SectorHeight)

           For col As Integer = 0I To GridSize.Width - 1 Step SectorWidth

               Sectors.Add(New Rectangle(col, row, SectorWidth, SectorHeight))

           Next col

       Next row

       Return Sectors

   End Function



EDITO2:

bueno voy a mostrate el resto del código porque total lo hice para ayudarte con el problema y ya no me sirve para nada esto así que antes de tirarlo te lo enseño xD, espero que te sirva.

( esta parte del code lo desarrollé en poco tiempo, está bastante sucio el código y se puede mejorar mucho, pero sirve para hacerse una idea )

Código (vbnet) [Seleccionar]
   Public Property currentsector As Integer = 0
   Public Property currentcolor As Color = Color.Gray

   Public ReadOnly Property GridSectors As List(Of Rectangle)
       Get
           Return Me.GetGrid(GridSize:=PictureBox1.ClientRectangle.Size, Columns:=5, Rows:=5)
       End Get
   End Property

   Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Shown

       Label1.Text = "Sectors: " & GridSectors.Count

   End Sub

   Private Sub PictureBox1_Paint(ByVal sender As Object, ByVal e As PaintEventArgs) _
   Handles PictureBox1.Paint


       Me.DrawGrid(g:=e.Graphics,
                   GridSize:=sender.ClientRectangle.Size,
                   Columns:=5,
                   Rows:=5,
                   ColorColumns:=Color.YellowGreen,
                   ColorRows:=Color.YellowGreen,
                   DrawBorder:=True,
                   ColorBorder:=Nothing,
                   ColorStyle:=Drawing2D.DashStyle.Solid)

   End Sub

   Private Sub PictureBox1_MouseMove(sender As Object, e As MouseEventArgs) Handles PictureBox1.MouseMove

       Dim Sectors As List(Of Rectangle) = Me.GridSectors

       For X As Integer = 0I To (Sectors.Count - 1I)

           If Sectors(X).Contains(sender.PointToClient(MousePosition)) Then

               Dim myBrush As New SolidBrush(currentcolor)

               Using formGraphics As Graphics = sender.CreateGraphics()

                   formGraphics.FillRectangle(myBrush, New Rectangle(Sectors(X).X + 1, Sectors(X).Y + 1, Sectors(X).Width - 2, Sectors(X).Height - 2))
                   myBrush.Dispose()

               End Using ' formGraphics
               currentsector = X + 1
               Label2.Text = "Current sector: " & currentsector

           Else
               Dim myBrush As New SolidBrush(Color.Black)

               Using formGraphics As Graphics = sender.CreateGraphics()

                   formGraphics.FillRectangle(myBrush, New Rectangle(Sectors(X).X + 1, Sectors(X).Y + 1, Sectors(X).Width - 2, Sectors(X).Height - 2))
                   myBrush.Dispose()

               End Using ' formGraphics
           End If ' Sectors(X).Contains(...)

       Next X

   End Sub

   Private Sub PictureBox1_Click(sender As Object, e As EventArgs) Handles PictureBox1.MouseDown

       Label3.Text = "Last Sector Clicked: " & currentsector

       '  Dim sector As Rectangle = Me.GridSectors(currentsector - 1)
       currentcolor = Color.Red
       PictureBox1.Cursor = Cursors.Hand
       PictureBox1.Update()

       'Dim myBrush As New SolidBrush(Color.Red)

       'Using formGraphics As Graphics = PictureBox1.CreateGraphics()

       '    formGraphics.FillRectangle(myBrush, New Rectangle(sector.X + 1, sector.Y + 1, sector.Width - 2, sector.Height - 2))
       '    myBrush.Dispose()

       'End Using ' formGraphics

   End Sub

   Private Sub PictureBox1_Clic(sender As Object, e As EventArgs) Handles PictureBox1.MouseUp
       Label3.Text = "Last Sector Clicked: " & currentsector

       '  Dim sector As Rectangle = Me.GridSectors(currentsector - 1)
       currentcolor = Color.Gray
       PictureBox1.Cursor = Cursors.Default
       PictureBox1.Update()

       'Dim myBrush As New SolidBrush(Color.Red)

       'Using formGraphics As Graphics = PictureBox1.CreateGraphics()

       '    formGraphics.FillRectangle(myBrush, New Rectangle(sector.X + 1, sector.Y + 1, sector.Width - 2, sector.Height - 2))
       '    myBrush.Dispose()

       'End Using ' formGraphics

   End Sub






EDITO1:

Cita de: Meta en 20 Agosto 2014, 23:27 PM

Fijándome justo la imagen de arriba, al pinchar los pictureBox quiero que aparezcan en tiempo real los resultados en Decimales, Hexadecimales y Binarios.

El tiempo real quiero decir, que desde que pulse un pictureBox, se actualiza los datos dentro de los textBox inficado arriba.

Con usar timer de 0.1 segundo funciona en vez de usar un botón para actualizar.

Espero que se entienda lo que quiero hacer. Esta parte si que no me sale.

Lo siento creo que no te entendí muy bien, ¿que problema tienes actualmente a la hora de actualizar los valores de cada control?.

Si vas a utilizar tropecientos pictureboxes entonces deberías suscribirte al evento Click como te explicó seba123neo, y una vez pulses cualquier picturebox actualizaríass los valores (de forma interna) y los imprimirías en los textboxes, ¿cual es el problema?

Saludos