elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  [C#]Cambiar color Lista Botones
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [C#]Cambiar color Lista Botones  (Leído 8,640 veces)
evicar

Desconectado Desconectado

Mensajes: 36


Ver Perfil
[C#]Cambiar color Lista Botones
« en: 19 Agosto 2010, 14:54 pm »

amigos les cuento estoy creando un formulario que contiene muchos botones cada boton es una localizacion en una rack de la bodega.. ej. tengo btn7h01, btn7h02, btn7h03 .. etc, btn6j01,btn6j02,btn6j05... etc

tengo una tabla en sql server con el nombre de LocalizacionBodega en esta tabla tengo columnas localizacion, producto,fechaingreso,fechaegreso,cantidad..

en mi aplicacion tengo listo el asunto de guardar en la tabla la ubicacion cuando se guarda un producto que bastaria con un update que guarde el boton que presiono(ej.btn7h06.) en la columna localizacion.


el asunto es que quiero que cuando se ocupe una ubicacion (btn7h06) cambie de color el boton (ej rojo). eso es relativamente facil cuando presiono el boton (btn7h06) cambia a color rojo. pero el problema es cuando reinicio la aplicacion no quedara guardado ese color.

entonces en el load del form tengo una Consulta sql que me arrojara todas las localizaciones ocupadas.... me arrojara como resultado el nombre de los botones ej: btn7h01,btn7h06,btn7j01.

entonces estos tres botones deberan cambiar de color..


en estos momentos estoy guardando el resultado de esa consulta en una List<string>
como puedo cambiar el color a una lista que contine n nombre de botones.


Código
  1.  
  2. int m;
  3. List<string> lista_nombres = new List<string>();
  4. SqlConnection cn = new SqlConnection();
  5. cn.ConnectionString = "Data Source=xxxxxxxxxxx;Initial Catalog=SIVHOFMANN;User ID=xxxx";
  6. cn.Open();
  7. SqlDataAdapter ad = new SqlDataAdapter("select local=rtrim(localizacion) from localizacionproducto where producto<>''", cn);
  8. DataSet ds = new DataSet();
  9. ad.Fill(ds, "localizacionproducto");        
  10.  
  11. for (m = 0; (m < (ds.Tables[0].Rows.Count - 1)); m++)
  12. {
  13.      lista_nombres.Add(ds.Tables[0].Rows[m]["local"].ToString());
  14.  
  15. }
  16.  


« Última modificación: 19 Agosto 2010, 18:54 pm por [D4N93R] » En línea

[D4N93R]
Wiki

Desconectado Desconectado

Mensajes: 1.646


My software never has bugs. Its just features!


Ver Perfil WWW
Re: [C#]Cambiar color Lista Botones
« Respuesta #1 en: 19 Agosto 2010, 15:00 pm »

El control en donde están los botones (directamente el form, o un panel etc) tiene una propiedad llamada Controls, que es una collection de controles, ahí están todos, puedes hacer un foreach y probar si es Button algo asi: if(c is Button)  y haces lo que quieras dentro de esa condición.

Un saludo!


En línea

evicar

Desconectado Desconectado

Mensajes: 36


Ver Perfil
Re: [C#]Cambiar color Lista Botones
« Respuesta #2 en: 19 Agosto 2010, 15:22 pm »

El control en donde están los botones (directamente el form, o un panel etc) tiene una propiedad llamada Controls, que es una collection de controles, ahí están todos, puedes hacer un foreach y probar si es Button algo asi: if(c is Button)  y haces lo que quieras dentro de esa condición.

Un saludo!

en uno de mis intentos estoy recorriendo mi list<string> lista_nombre con un for me ro me dice que lista_nombres es un 'campo' pero se utiliza como metodo. como puedo solucionar esto o alguna otra idea para recorrer la lista.


Código
  1. for (int k = 0; (k <= (lista_nombres.Count - 1)); k++)
  2. {
  3.      this.Controls[lista_nombres(k)].BackColor = Color.Red;
  4. }


saludos
« Última modificación: 19 Agosto 2010, 17:27 pm por [D4N93R] » En línea

evicar

Desconectado Desconectado

Mensajes: 36


Ver Perfil
Re: [C#]Cambiar color Lista Botones
« Respuesta #3 en: 19 Agosto 2010, 21:36 pm »

logre hacer mi cometido pero en VB.net :( pero no es lo que quiero me gustaria pasarlo a C#


Código:
Imports System.Data.SqlClient

Public Class Form1

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Call Regresa_Nombres_Botones()
        For k As Integer = 0 To Regresa_Nombres_Botones.Count - 1
            Me.Controls(Regresa_Nombres_Botones(k)).BackColor = Color.Red
            Me.Controls(Regresa_Nombres_Botones(k)).Enabled = False

        Next


    End Sub

    Private Function Regresa_Nombres_Botones()
        Dim objConn As SqlConnection
        objConn = New SqlConnection("Data Source=xxxxxxxxxxxxxx;Initial Catalog=SIVHOFMANN;User ID=us")
        Dim m As Integer
        Dim Lista_Nombres As New List(Of String)

        Try
            objConn.Open()

            'Creo un Adapter
            Dim objAdapter As New SqlDataAdapter("select local=rtrim(localizacion) from localizacionproducto where producto<>''", objConn)
            'Creo un DataSet
            Dim objDataSet As New DataSet

            'Lleno el DataSet con la Tabla
            objAdapter.Fill(objDataSet, "localizacionproducto")

            'Recorro la tabla para ver que no exista un registro con el mismo nombre
            For m = 0 To objDataSet.Tables(0).Rows.Count - 1
                Lista_Nombres.Add(objDataSet.Tables(0).Rows(m).Item("local"))
            Next

        Catch ex As Exception
            MsgBox(ex.Message, MsgBoxStyle.Critical, "Error")
            objConn.Close()
        End Try

        Return Lista_Nombres


    End Function


    Private Sub btn7h1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn7h1.Click

    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnGrabar.Click

        Dim objConn As SqlConnection
        objConn = New SqlConnection("Data Source=xxxxxxxxxxxxxxxxx;Initial Catalog=SIVHOFMANN;User ID=us")
        Try
            objConn.Open()
            Dim objcomand3 As New SqlCommand("insert into localizacionproducto (producto,localizacion) values ('" + txtproducto.Text + "' ,'" + txtlocalizacion.Text + "')", objConn)
            objcomand3.ExecuteNonQuery()
        Catch ex As Exception
            MsgBox(ex.Message, MsgBoxStyle.Critical, "Error")
            objConn.Close()
        End Try

        Call Regresa_Nombres_Botones()
        For k As Integer = 0 To Regresa_Nombres_Botones.Count - 1
            Me.Controls(Regresa_Nombres_Botones(k)).BackColor = Color.Red
        Next

    End Sub


no se si me podrian ayudar a transformat a c# esta rutina

Código:
  Private Function Regresa_Nombres_Botones()
        Dim objConn As SqlConnection
        objConn = New SqlConnection("Data Source=xxxxxxxxxxxxxx;Initial Catalog=SIVHOFMANN;User ID=us")
        Dim m As Integer
        Dim Lista_Nombres As New List(Of String)

        Try
            objConn.Open()

            'Creo un Adapter
            Dim objAdapter As New SqlDataAdapter("select local=rtrim(localizacion) from localizacionproducto where producto<>''", objConn)
            'Creo un DataSet
            Dim objDataSet As New DataSet

            'Lleno el DataSet con la Tabla
            objAdapter.Fill(objDataSet, "localizacionproducto")

            'Recorro la tabla para ver que no exista un registro con el mismo nombre
            For m = 0 To objDataSet.Tables(0).Rows.Count - 1
                Lista_Nombres.Add(objDataSet.Tables(0).Rows(m).Item("local"))
            Next

        Catch ex As Exception
            MsgBox(ex.Message, MsgBoxStyle.Critical, "Error")
            objConn.Close()
        End Try

        Return Lista_Nombres


    End Function

e ocupado esta pagina http://www.carlosag.net/Tools/CodeTranslator/ para transforma el codigo pero me lo da con muchos errores... sobre todo con el return


saludos

En línea

[D4N93R]
Wiki

Desconectado Desconectado

Mensajes: 1.646


My software never has bugs. Its just features!


Ver Perfil WWW
Re: [C#]Cambiar color Lista Botones
« Respuesta #4 en: 19 Agosto 2010, 21:42 pm »


Código
  1. private List<string> Regresa_Nombres_Botones()

Tte da error porque el traductor ese le pone void en vez de List<string> en el tipo de retorno..

Un saludo! pasa lo mismo con el otro código.
En línea

evicar

Desconectado Desconectado

Mensajes: 36


Ver Perfil
Re: [C#]Cambiar color Lista Botones
« Respuesta #5 en: 19 Agosto 2010, 23:05 pm »


Código
  1. private List<string> Regresa_Nombres_Botones()

Tte da error porque el traductor ese le pone void en vez de List<string> en el tipo de retorno..

Un saludo! pasa lo mismo con el otro código.

eso ya lo tenia mas o menos solucionado te presento mi codigo en c#

Código:
        private void Form1_Load(object sender, EventArgs e)
        {
            Regresa_Nombres_Botones();
            for (int k = 0; (k <= (Regresa_Nombres_Botones.Count - 1)); k++)
            {
                this.Controls[Regresa_Nombres_Botones(k)].BackColor = Color.Red;
                this.Controls[Regresa_Nombres_Botones(k)].Enabled = false;
            }
           
           
         }

 



        private List<string> Regresa_Nombres_Botones()
        {
           
            SqlConnection cn = new SqlConnection();
            cn.ConnectionString = "Data Source=200.119.240.243;Initial Catalog=SIVHOFMANN;User ID=us";
            List<string> lista_nombres = new List<string>();
           
            try
            {
                cn.Open();
                SqlDataAdapter ad = new SqlDataAdapter("select local=rtrim(localizacion) from localizacionproducto where producto<>''", cn);
                DataSet ds = new DataSet();
                ad.Fill(ds, "localizacionproducto");
                for (int m = 0; (m < (ds.Tables[0].Rows.Count - 1)); m++)
                {
                    lista_nombres.Add(ds.Tables[0].Rows[m]["local"].ToString());

                }
            }
            catch (Exception ex)
            {
               
               
            }

            return lista_nombres;
           
        }


ahora mi problema surge en el for en el evento load del form

Código:
        private void Form1_Load(object sender, EventArgs e)
        {
            Regresa_Nombres_Botones();
            for (int k = 0; (k <= (Regresa_Nombres_Botones.Count - 1)); k++)
            {
                this.Controls[Regresa_Nombres_Botones(k)].BackColor = Color.Red;
                this.Controls[Regresa_Nombres_Botones(k)].Enabled = false;
            }
           
           
         }

en vb.net es super siple llamar el regresa_nombres_botones pero en c# que es lo que tengo mal????.


saludos.

En línea

evicar

Desconectado Desconectado

Mensajes: 36


Ver Perfil
Re: [C#]Cambiar color Lista Botones
« Respuesta #6 en: 19 Agosto 2010, 23:29 pm »

SOLUCIONADO.... xD


Código:
           Regresa_Nombres_Botones();
            for (int k = 0; (k <= (Regresa_Nombres_Botones().Count - 1)); k++)
            {
                this.Controls[Regresa_Nombres_Botones()[k]].BackColor = Color.Red;
                this.Controls[Regresa_Nombres_Botones()[k]].Enabled = false;
            }
En línea

[D4N93R]
Wiki

Desconectado Desconectado

Mensajes: 1.646


My software never has bugs. Its just features!


Ver Perfil WWW
Re: [C#]Cambiar color Lista Botones
« Respuesta #7 en: 19 Agosto 2010, 23:38 pm »

Excelente!

PD: Aparte de poner los códigos entre [code][/code] ponle el languaje:

[code=csharp][/code] :) De esa fomra ayuda un poco más a leer el code.

Saludos!
En línea

evicar

Desconectado Desconectado

Mensajes: 36


Ver Perfil
Re: [C#]Cambiar color Lista Botones
« Respuesta #8 en: 8 Septiembre 2010, 17:35 pm »

Amigos estoy en la parte final de mi proyecto.

les adjunto un pantallazo de mi aplicacion.


Uploaded with ImageShack.us

el tema es el siguiente en el textbox ubicacion al momento de precionar un boton de la parte superior me imprime en el textbox en name del boton. el tema es el siguiente cuando presione el boton quiero que cambie de color y al presionar otro boton quiero que vuelva a el color por defecto(color.control)

al presionar un boton que se cambie de color se que es facil button.backcolor = color.red;

pero como puedo hacer que el botton que ya cambio de color vuelva a su color por defecto

el evento Enter (button.backcorlor=color.red) y  leave(button.backcolor=color.control) no me sirven porque cuando me muevo a un textbox se produce el evento leave

Tendria que encontrar alguna forma de que los bottones de la parte superior no pertenescan al form y asi el eveto enter y leavel sean parte solamente de ese sector de bottones
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Cambiar de color un textarea con botones
Desarrollo Web
Ori-chan 1 1,922 Último mensaje 30 Septiembre 2013, 06:51 am
por #!drvy
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines