none
pintar label conforme el mouse pasa encima de ellos RRS feed

  • Pregunta

  • tengo un proyecto de esta siguiente problematica:

    dibujare una cuadricula de 6x6, tengo pensado hacerlo por label, despues tengo que pintar el label con el punto, vaya simulando un lapiz, con un clic sostenido cuando pase por un label este debe pintarse (cambial el fondo a negro) e ir contando cuantos label voy pintado esa es mi idea , pero no tengo como elaborar esto


    Saludos,
    Recuerda que si las respuestas te ayudan a resolver tus problemas no olvides marcarla como respuesta, ya que otros usuarios pueden tener el mismo problema.
    J. Miguel
    • Editado J_Miguel miércoles, 22 de septiembre de 2010 8:12 mejorar pregunta
    martes, 21 de septiembre de 2010 23:40

Respuestas

  • Public Class Form1
    
      Private Sub pintar_casilla(ByVal sender As Object, ByVal e As EventArgs) Handles Label1.Click, Label2.Click, Label3.Click, _
                                                          Label4.Click, Label5.Click, Label6.Click
        'Procedimiento que me pinta los labels de negro al hacer click sobre ellos
        If sender Is Me.Label1 Then
          Me.Label1.BackColor = Color.Black
        ElseIf sender Is Me.Label2 Then
          Me.Label2.BackColor = Color.Black
        ElseIf sender Is Me.Label3 Then
          Me.Label3.BackColor = Color.Black
        ElseIf sender Is Me.Label4 Then
          Me.Label4.BackColor = Color.Black
        ElseIf sender Is Me.Label5 Then
          Me.Label5.BackColor = Color.Black
        ElseIf sender Is Me.Label6 Then
          Me.Label6.BackColor = Color.Black
        End If
        'Compruebo cuantos cuadrados estan pintados de negro
        obtener_labelspintados()
      End Sub
    
      Public Sub obtener_labelspintados()
        Dim pintados As Integer = 0
    
        'Procedimiento para saber cuantos labels están pintados de negro
        Dim obj As Control
        For Each obj In Me.Controls
          If TypeOf obj Is Label Then
            If obj.BackColor = Color.Black Then
              pintados += 1
              Me.Label7.Text = pintados
            End If
          End If
        Next
      End Sub
    
      Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        limpiar_labelspintados()
      End Sub
    
      Public Sub limpiar_labelspintados()
        'Procedimiento para limpiar los labels que están pintados de negro
        Dim obj As Control
        For Each obj In Me.Controls
          If TypeOf obj Is Label Then
            obj.BackColor = Color.White
          End If
        Next
        Me.Label7.Text = "0"
      End Sub
    
    End Class

    nunca te acostarás sin saber una cosa más
    • Marcado como respuesta J_Miguel miércoles, 22 de septiembre de 2010 8:13
    miércoles, 22 de septiembre de 2010 2:45

  • pero esto lo ahces si los Label tiene asignado el evento del MouseMove

     

    Private Sub c1_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles c1.MouseMove, c2.MouseMove, c3.MouseMove

            If (e.Button = Windows.Forms.MouseButtons.Left) Then
           
                Dim lbl As Label = TryCast(sender, Label)
                If lbl IsNot Nothing Then
                    lbl.BackColor = Color.Black
                End If
               
            End If

    End Sub

    veras que puse en el mismo evento varios Lables juntos, por eso use el sender

     

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    • Marcado como respuesta J_Miguel miércoles, 22 de septiembre de 2010 8:13
    miércoles, 22 de septiembre de 2010 3:43
  • Como te explique la variable la tienes q activar si pulsas en una de las label con el Evento MouseDown... y desactivar en  el mouseUp, sino pones dicho código no se activaría. y luego dentro del pintar:

    Si estás en el evento mouseenter va a pintar mientras entres pero no mientras te mueves, por eso deberias hacerlo en el evento MouseMove...


    Para el correcto funcionamiento, y que otros usuarios se puedan beneficiar de la solucion de esta pregunta por favor marca las respuestas que te hayan ayudado como "Respuesta".
    Si la respuesta te ha sido util Votala.
    Mi Blog: Jtorrecilla
    Enlace a Faq de Winforms en Ingles Muy bueno
    • Marcado como respuesta J_Miguel miércoles, 22 de septiembre de 2010 8:14
    miércoles, 22 de septiembre de 2010 6:57
    Moderador
  • graxias a  todos por los consejos he podido realizar mi acción de la siguiente manera:

    Public Class Form1
    
      Private ActivarPintado As Boolean = False
    
      Private Sub borrar(ByVal sender As Object, ByVal e As EventArgs) Handles c1.DoubleClick, c2.DoubleClick, c3.DoubleClick, _
        c4.DoubleClick, c5.DoubleClick, c6.DoubleClick, c7.DoubleClick, c8.DoubleClick, c9.DoubleClick, c10.DoubleClick, _
        c11.DoubleClick, c12.DoubleClick, c13.DoubleClick, c14.DoubleClick, c15.DoubleClick, c16.DoubleClick, _
        c17.DoubleClick, c18.DoubleClick, c19.DoubleClick, c20.DoubleClick, c21.DoubleClick, c22.DoubleClick, _
        c23.DoubleClick, c23.DoubleClick, c24.DoubleClick, c25.DoubleClick, c26.DoubleClick, c27.DoubleClick, _
        c28.DoubleClick, c29.DoubleClick, c30.DoubleClick, c31.DoubleClick, c32.DoubleClick, c33.DoubleClick, _
        c34.DoubleClick, c35.DoubleClick, c36.DoubleClick
    
        If ActivarPintado = False Then
          Dim lbl As Label = TryCast(sender, Label)
          If lbl IsNot Nothing Then
            lbl.BackColor = Color.White
          End If
        End If
    
        obtener_labelspintados()
      End Sub
    
      Private Sub pintar(ByVal sender As Object, ByVal e As EventArgs) Handles c1.MouseEnter, c2.MouseEnter, c3.MouseEnter, _
        c4.MouseEnter, c5.MouseEnter, c6.MouseEnter, c7.MouseEnter, c8.MouseEnter, c9.MouseEnter, c10.MouseEnter, _
        c11.MouseEnter, c12.MouseEnter, c13.MouseEnter, c14.MouseEnter, c15.MouseEnter, c16.MouseEnter, _
        c17.MouseEnter, c18.MouseEnter, c19.MouseEnter, c20.MouseEnter, c21.MouseEnter, c22.MouseEnter, _
        c23.MouseEnter, c23.MouseEnter, c24.MouseEnter, c25.MouseEnter, c26.MouseEnter, c27.MouseEnter, _
        c28.MouseEnter, c29.MouseEnter, c30.MouseEnter, c31.MouseEnter, c32.MouseEnter, c33.MouseEnter, _
        c34.MouseEnter, c35.MouseEnter, c36.MouseEnter
    
        If ActivarPintado = True Then
          Dim lbl As Label = TryCast(sender, Label)
          If lbl IsNot Nothing Then
            lbl.BackColor = Color.Black
          End If
        End If
    
        obtener_labelspintados()
      End Sub
    
      Public Sub obtener_labelspintados()
        Dim pintados As Integer = 0
        'Procedimiento para saber cuantos labels están pintados de negro
        Dim obj As Control
        For Each obj In Me.Controls
          If TypeOf obj Is Label Then
            If obj.BackColor = Color.Black Then
              pintados += 1
              Me.txtCuadros.Text = pintados
            End If
          End If
        Next
      End Sub
    
      Public Sub limpiar_labelspintados()
        'Procedimiento para limpiar los labels que están pintados de negro
        Dim obj As Control
        For Each obj In Me.Controls
          If TypeOf obj Is Label Then
            obj.BackColor = Color.White
          End If
        Next
        Me.txtCuadros.Text = "0"
      End Sub
    
      Private Sub Form1_KeyDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles MyBase.KeyDown
        If (e.Control = True) Then
          ActivarPintado = True
        End If
      End Sub
    
      Private Sub Form1_KeyUp(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles MyBase.KeyUp
        If (e.Control = False) Then
          ActivarPintado = False
        End If
      End Sub
    
      Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Me.Focus()
      End Sub
    
      Private Sub BorrarTodoToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BorrarTodoToolStripMenuItem.Click
        limpiar_labelspintados()
        Me.Focus()
      End Sub
    
    End Class
    

    Graxias a todos como podran ver en mi codigo ay un grano de arena de cada uno graxias, y tambien algo mio jeje.

     


    Saludos,
    Recuerda que si las respuestas te ayudan a resolver tus problemas no olvides marcarla como respuesta, ya que otros usuarios pueden tener el mismo problema.
    J. Miguel
    • Marcado como respuesta J_Miguel miércoles, 22 de septiembre de 2010 8:15
    miércoles, 22 de septiembre de 2010 8:11

Todas las respuestas

  • hola

    para cambiar simular el lapuz simplemente puedes cambiar el icono del cursor con alguna imagen con forma de lapiz

    ahora bien para el tema de arrastrar y cambiar de color podrias usar el evento MouseMove , cuando pase por sobre lo label cambiar el color

    el evento mouseMove tiene en el argumento "e"


    que permite detectar que boton del mouse esta pulsado
    entonces cuandos e da el evento, y adema se pulsa por ejemplo el boton derecho se cambia de color

    el resto de ir contando solo es cuestion de llevar un contador de items cuando se cumple la condicion que cabia el color del label

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    miércoles, 22 de septiembre de 2010 2:30
  • Public Class Form1
    
      Private Sub pintar_casilla(ByVal sender As Object, ByVal e As EventArgs) Handles Label1.Click, Label2.Click, Label3.Click, _
                                                          Label4.Click, Label5.Click, Label6.Click
        'Procedimiento que me pinta los labels de negro al hacer click sobre ellos
        If sender Is Me.Label1 Then
          Me.Label1.BackColor = Color.Black
        ElseIf sender Is Me.Label2 Then
          Me.Label2.BackColor = Color.Black
        ElseIf sender Is Me.Label3 Then
          Me.Label3.BackColor = Color.Black
        ElseIf sender Is Me.Label4 Then
          Me.Label4.BackColor = Color.Black
        ElseIf sender Is Me.Label5 Then
          Me.Label5.BackColor = Color.Black
        ElseIf sender Is Me.Label6 Then
          Me.Label6.BackColor = Color.Black
        End If
        'Compruebo cuantos cuadrados estan pintados de negro
        obtener_labelspintados()
      End Sub
    
      Public Sub obtener_labelspintados()
        Dim pintados As Integer = 0
    
        'Procedimiento para saber cuantos labels están pintados de negro
        Dim obj As Control
        For Each obj In Me.Controls
          If TypeOf obj Is Label Then
            If obj.BackColor = Color.Black Then
              pintados += 1
              Me.Label7.Text = pintados
            End If
          End If
        Next
      End Sub
    
      Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        limpiar_labelspintados()
      End Sub
    
      Public Sub limpiar_labelspintados()
        'Procedimiento para limpiar los labels que están pintados de negro
        Dim obj As Control
        For Each obj In Me.Controls
          If TypeOf obj Is Label Then
            obj.BackColor = Color.White
          End If
        Next
        Me.Label7.Text = "0"
      End Sub
    
    End Class

    nunca te acostarás sin saber una cosa más
    • Marcado como respuesta J_Miguel miércoles, 22 de septiembre de 2010 8:13
    miércoles, 22 de septiembre de 2010 2:45
  • hola: pues cree esto para probar:

    Private Sub c1_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles c1.MouseMove

            If (e.Button = Windows.Forms.MouseButtons.Left) Then
                c1.BackColor = Color.Black
            End If

    End Sub 

    y asi en cada label de c1 a c9, pero al pasarlo lo pinta y kiero q al darle clic y al pasarlo pinte, es decir, con un clic sostenido poder pinta y si suelto el clic deja de pintar.


    Saludos,
    Recuerda que si las respuestas te ayudan a resolver tus problemas no olvides marcarla como respuesta, ya que otros usuarios pueden tener el mismo problema.
    J. Miguel
    • Editado J_Miguel miércoles, 22 de septiembre de 2010 3:06
    miércoles, 22 de septiembre de 2010 3:01
  • quizas con GDI con Drawline controlando las posiciones del ratón y controlando si esta presionado o no. Ahora luego no se me ocurre como controlar si el label está pintado o no.
    nunca te acostarás sin saber una cosa más
    miércoles, 22 de septiembre de 2010 3:06
  • como comenta barbaroja, si necesitas dibujar dentro del Label, seguro deberas aplicar GDI

     

    http://social.msdn.microsoft.com/Forums/en-US/netfxbcl/thread/196ad9a3-e5ec-44ca-a484-67631e414919


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    miércoles, 22 de septiembre de 2010 3:32
  • no entendi bien o me di a entender bien:

    ten un cuadrado de compuesto de 36 label cuadrados.

    con tu codigo leandro y con el de barbaroja, pinta los label pero por cada click.

     

    Lo que deseo hacer es dar un click sostenido sobre esa area de los label y que se pinten en negro aquellos label donde pasa el puntero.

    alguna idea de como lograrlo?


    Saludos,
    Recuerda que si las respuestas te ayudan a resolver tus problemas no olvides marcarla como respuesta, ya que otros usuarios pueden tener el mismo problema.
    J. Miguel
    miércoles, 22 de septiembre de 2010 3:37

  • pero esto lo ahces si los Label tiene asignado el evento del MouseMove

     

    Private Sub c1_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles c1.MouseMove, c2.MouseMove, c3.MouseMove

            If (e.Button = Windows.Forms.MouseButtons.Left) Then
           
                Dim lbl As Label = TryCast(sender, Label)
                If lbl IsNot Nothing Then
                    lbl.BackColor = Color.Black
                End If
               
            End If

    End Sub

    veras que puse en el mismo evento varios Lables juntos, por eso use el sender

     

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    • Marcado como respuesta J_Miguel miércoles, 22 de septiembre de 2010 8:13
    miércoles, 22 de septiembre de 2010 3:43
  • lo e logrado con el mouseenter pero no puedo condicionar el boton por que dice que po pertence a ese evento.

    alguien lo a probado jaja los invito a probar cualkier codigo funciona con el evento MouseEnter pero no se puede condicionar el btn alguna otra propuesta?


    Saludos,
    Recuerda que si las respuestas te ayudan a resolver tus problemas no olvides marcarla como respuesta, ya que otros usuarios pueden tener el mismo problema.
    J. Miguel
    miércoles, 22 de septiembre de 2010 4:07
  • Lo que intentas hacer es como si abrieras una ventana de selección? click en un label y que se pinten de negro los labels por donde vas pasando en ratón?.

    nunca te acostarás sin saber una cosa más
    miércoles, 22 de septiembre de 2010 4:45
  • sip asi es barbaroja
    Saludos,
    Recuerda que si las respuestas te ayudan a resolver tus problemas no olvides marcarla como respuesta, ya que otros usuarios pueden tener el mismo problema.
    J. Miguel
    miércoles, 22 de septiembre de 2010 4:47
  • Hola J_Miguel, lo que podrias hacer es controlar los eventos Mouse_Down y Mouse_Up,

     

    Tener una variable boolean que se active en el MouseDown y desactive en el Mouse_Up

    y segun dicha variable(publica al formulario), pintes o no pintes....


    Para el correcto funcionamiento, y que otros usuarios se puedan beneficiar de la solucion de esta pregunta por favor marca las respuestas que te hayan ayudado como "Respuesta".
    Si la respuesta te ha sido util Votala.
    Mi Blog: Jtorrecilla
    Enlace a Faq de Winforms en Ingles Muy bueno
    miércoles, 22 de septiembre de 2010 6:08
    Moderador
  • el problema son los eventos mousemove,down,up funcionan solo cunaod se ace click sobre ellos pero al arrastrarlos a otros label sigue teniendo el evento del primer label donde se le dio click.

    el unioc que funciona bien es el mouseenter pero solo se maneja por byval e as eventarg.. y no por el byval e as windows.form.mouse..

    si trato de manejarlo asi con botones del mouse error.

    tenie q aver otra alternativa q sirva como erramienta alzada de mano escritura que pinten loa labl o cual kier otro control que pueda pintar un cuadro o una cuadricula.

    se podra hacer en un datagridview?


    Saludos,
    Recuerda que si las respuestas te ayudan a resolver tus problemas no olvides marcarla como respuesta, ya que otros usuarios pueden tener el mismo problema.
    J. Miguel
    miércoles, 22 de septiembre de 2010 6:14
  • cualkier codigo que han puesto funciona pero e spor click cada uno asi que modifique algunas cosas pongo el código mas corto sin haber favoritismo jaja

    Private Sub pintarcasillas(ByVal sender As Object, ByVal e As EventArgs) Handles c1.MouseEnter, c2.MouseEnter, c3.MouseEnter 

                Dim lbl As Label = TryCast(sender, Label)
                If lbl IsNot Nothing Then
                    lbl.BackColor = Color.Black
                End If

    End Sub

     

    esto funciona pero no se puede evaluar el boton del mouse por que no un System.Windows.Forms.MouseEventArgs, asi que es un EventArgs.

    pero s eme ocurre en vez de condicionarlo con el boton del mouse se pueda condicionar con una tecla, es decir, por ejemplo la tecla control, que si esta presionada la tecla control donde pase mi mouse sobre los controles pueda pintarlos se podra?

    no encuentro referencia de eso


    Saludos,
    Recuerda que si las respuestas te ayudan a resolver tus problemas no olvides marcarla como respuesta, ya que otros usuarios pueden tener el mismo problema.
    J. Miguel
    miércoles, 22 de septiembre de 2010 6:22
  • Los eventos donde pues controlar el boton pulsado son el Mousedown y MouseUp, incluso en el MouseMove asi, que podrias hacerlo en el mousemove...

     

    Por eso te decia que con una variable lo podrias hacer:

     

    Por ejemplo:

    private ActivarPintado as boolean=false

    Private Sub MouseDown(ByVal sender As Object, ByVal e As MouseEventArgs) Handles c1.MouseDown, c2.MouseDown, c3.MouseDown

               If e.Button = Windows.Forms.MouseButtons.Left Then

    ActivarPintado =true

            End If

    End Sub

     

    Private Sub MouseUp(ByVal sender As Object, ByVal e As MouseEventArgs) Handles c1.MouseUp, c2.MouseUp, c3.MouseUp

               ActivarPintado =false

    End Sub

     

     


    Para el correcto funcionamiento, y que otros usuarios se puedan beneficiar de la solucion de esta pregunta por favor marca las respuestas que te hayan ayudado como "Respuesta".
    Si la respuesta te ha sido util Votala.
    Mi Blog: Jtorrecilla
    Enlace a Faq de Winforms en Ingles Muy bueno
    miércoles, 22 de septiembre de 2010 6:31
    Moderador
  • puse este codigo:

    Private Sub pintar(ByVal sender As Object, ByVal e As KeyEventArgs) Handles c1.MouseEnter, c2.MouseEnter, c3.MouseEnter, _
                                                            c4.MouseEnter, c5.MouseEnter, c6.MouseEnter
            If e.Control = True Then
                Dim lbl As Label = TryCast(sender, Label)
                If lbl IsNot Nothing Then
                    lbl.BackColor = Color.Black
                End If
            End If

    End Sub

     

    y me sale este error:

    No se puede convertir un objeto de tipo 'System.EventArgs' al tipo 'System.Windows.Forms.KeyEventArgs'.

    Me doy cuenta que con el MouseEnter solo puedo manejar 'System.EventArgs'.

    Alguna Solución o sugerencia???


    Saludos,
    Recuerda que si las respuestas te ayudan a resolver tus problemas no olvides marcarla como respuesta, ya que otros usuarios pueden tener el mismo problema.
    J. Miguel
    miércoles, 22 de septiembre de 2010 6:31
  • Deberia ser asi:

    Private Sub pintar(ByVal sender As Object, ByVal e As EventArgs) Handles c1.MouseEnter, c2.MouseEnter, c3.MouseEnter, _
                                                            c4.MouseEnter, c5.MouseEnter, c6.MouseEnter

                Dim lbl As Label = TryCast(sender, Label)
                If lbl IsNot Nothing Then
                    lbl.BackColor = Color.Black
                End If

    End Sub


    Para el correcto funcionamiento, y que otros usuarios se puedan beneficiar de la solucion de esta pregunta por favor marca las respuestas que te hayan ayudado como "Respuesta".
    Si la respuesta te ha sido util Votala.
    Mi Blog: Jtorrecilla
    Enlace a Faq de Winforms en Ingles Muy bueno
    miércoles, 22 de septiembre de 2010 6:40
    Moderador
  • Exacto solo acepta EventArgs solo asi funciona pero en cualkier label que pase mi puntero lo pinta jeje por eso kiero condicionarlo con algo, tu  propuesta se vee bien pero no entiendo esto:

    private ActivarPintado as boolean=false

    y luego:

    ActivarPintado =true/false

    Imagino que debe estar ligado a este código:

    Private Sub pintar(ByVal sender As Object, ByVal e As EventArgs) Handles c1.MouseEnter, c2.MouseEnter, c3.MouseEnter, _
                                                            c4.MouseEnter, c5.MouseEnter, c6.MouseEnter

                Dim lbl As Label = TryCast(sender, Label)
                If lbl IsNot Nothing Then
                    lbl.BackColor = Color.Black
                End If

    End Sub

    esa parte es la que no entiendo


    Saludos,
    Recuerda que si las respuestas te ayudan a resolver tus problemas no olvides marcarla como respuesta, ya que otros usuarios pueden tener el mismo problema.
    J. Miguel
    miércoles, 22 de septiembre de 2010 6:52
  • Como te explique la variable la tienes q activar si pulsas en una de las label con el Evento MouseDown... y desactivar en  el mouseUp, sino pones dicho código no se activaría. y luego dentro del pintar:

    Si estás en el evento mouseenter va a pintar mientras entres pero no mientras te mueves, por eso deberias hacerlo en el evento MouseMove...


    Para el correcto funcionamiento, y que otros usuarios se puedan beneficiar de la solucion de esta pregunta por favor marca las respuestas que te hayan ayudado como "Respuesta".
    Si la respuesta te ha sido util Votala.
    Mi Blog: Jtorrecilla
    Enlace a Faq de Winforms en Ingles Muy bueno
    • Marcado como respuesta J_Miguel miércoles, 22 de septiembre de 2010 8:14
    miércoles, 22 de septiembre de 2010 6:57
    Moderador
  • graxias a  todos por los consejos he podido realizar mi acción de la siguiente manera:

    Public Class Form1
    
      Private ActivarPintado As Boolean = False
    
      Private Sub borrar(ByVal sender As Object, ByVal e As EventArgs) Handles c1.DoubleClick, c2.DoubleClick, c3.DoubleClick, _
        c4.DoubleClick, c5.DoubleClick, c6.DoubleClick, c7.DoubleClick, c8.DoubleClick, c9.DoubleClick, c10.DoubleClick, _
        c11.DoubleClick, c12.DoubleClick, c13.DoubleClick, c14.DoubleClick, c15.DoubleClick, c16.DoubleClick, _
        c17.DoubleClick, c18.DoubleClick, c19.DoubleClick, c20.DoubleClick, c21.DoubleClick, c22.DoubleClick, _
        c23.DoubleClick, c23.DoubleClick, c24.DoubleClick, c25.DoubleClick, c26.DoubleClick, c27.DoubleClick, _
        c28.DoubleClick, c29.DoubleClick, c30.DoubleClick, c31.DoubleClick, c32.DoubleClick, c33.DoubleClick, _
        c34.DoubleClick, c35.DoubleClick, c36.DoubleClick
    
        If ActivarPintado = False Then
          Dim lbl As Label = TryCast(sender, Label)
          If lbl IsNot Nothing Then
            lbl.BackColor = Color.White
          End If
        End If
    
        obtener_labelspintados()
      End Sub
    
      Private Sub pintar(ByVal sender As Object, ByVal e As EventArgs) Handles c1.MouseEnter, c2.MouseEnter, c3.MouseEnter, _
        c4.MouseEnter, c5.MouseEnter, c6.MouseEnter, c7.MouseEnter, c8.MouseEnter, c9.MouseEnter, c10.MouseEnter, _
        c11.MouseEnter, c12.MouseEnter, c13.MouseEnter, c14.MouseEnter, c15.MouseEnter, c16.MouseEnter, _
        c17.MouseEnter, c18.MouseEnter, c19.MouseEnter, c20.MouseEnter, c21.MouseEnter, c22.MouseEnter, _
        c23.MouseEnter, c23.MouseEnter, c24.MouseEnter, c25.MouseEnter, c26.MouseEnter, c27.MouseEnter, _
        c28.MouseEnter, c29.MouseEnter, c30.MouseEnter, c31.MouseEnter, c32.MouseEnter, c33.MouseEnter, _
        c34.MouseEnter, c35.MouseEnter, c36.MouseEnter
    
        If ActivarPintado = True Then
          Dim lbl As Label = TryCast(sender, Label)
          If lbl IsNot Nothing Then
            lbl.BackColor = Color.Black
          End If
        End If
    
        obtener_labelspintados()
      End Sub
    
      Public Sub obtener_labelspintados()
        Dim pintados As Integer = 0
        'Procedimiento para saber cuantos labels están pintados de negro
        Dim obj As Control
        For Each obj In Me.Controls
          If TypeOf obj Is Label Then
            If obj.BackColor = Color.Black Then
              pintados += 1
              Me.txtCuadros.Text = pintados
            End If
          End If
        Next
      End Sub
    
      Public Sub limpiar_labelspintados()
        'Procedimiento para limpiar los labels que están pintados de negro
        Dim obj As Control
        For Each obj In Me.Controls
          If TypeOf obj Is Label Then
            obj.BackColor = Color.White
          End If
        Next
        Me.txtCuadros.Text = "0"
      End Sub
    
      Private Sub Form1_KeyDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles MyBase.KeyDown
        If (e.Control = True) Then
          ActivarPintado = True
        End If
      End Sub
    
      Private Sub Form1_KeyUp(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles MyBase.KeyUp
        If (e.Control = False) Then
          ActivarPintado = False
        End If
      End Sub
    
      Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Me.Focus()
      End Sub
    
      Private Sub BorrarTodoToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BorrarTodoToolStripMenuItem.Click
        limpiar_labelspintados()
        Me.Focus()
      End Sub
    
    End Class
    

    Graxias a todos como podran ver en mi codigo ay un grano de arena de cada uno graxias, y tambien algo mio jeje.

     


    Saludos,
    Recuerda que si las respuestas te ayudan a resolver tus problemas no olvides marcarla como respuesta, ya que otros usuarios pueden tener el mismo problema.
    J. Miguel
    • Marcado como respuesta J_Miguel miércoles, 22 de septiembre de 2010 8:15
    miércoles, 22 de septiembre de 2010 8:11
  • Graxias Jtorrecilla por el consejo de la variable boolean, graxias leandro y barbarroja por los ejemplosd e código me sirvieron de mucho apoyo.

    Alfinal solo cambie unas cosas para adaptarlas mas a mis ejemplos. pero graxias a todos


    Saludos,
    Recuerda que si las respuestas te ayudan a resolver tus problemas no olvides marcarla como respuesta, ya que otros usuarios pueden tener el mismo problema.
    J. Miguel
    miércoles, 22 de septiembre de 2010 8:16