Duda con aplicacion de VS2008

bLaCkH0Le

Buenas , pues mi problema es el siguiente: estoy creando una aplicacion pa la uni en visual studio 2008. Es una aplicacion para una peluqueria donde necesito una clase "peluqueria" donde ire almacenando clientes y demas. En el form principal llamo a esto:

    private void Form1_Load(object sender, EventArgs e)
    {
        //Creamos la peluqueria
        peluqueria P = new peluqueria();
    }

y cuando le damos a añadir nuevo cliente, pues se nos abre un nuevo form, con un formulario para meter los datos.Cuando le doy a aceptar hago esto:

        String nombre=txtnombre.Text;
        String  apellido=txtapellidos.Text;
        String direccion=txtdireccion.Text;
        String edad=txtedad.Text;
        String telefono=txttelefono.Text;

        P.anadircliente(nombre,apellido,direccion,edad,telefono);

El problema es que no me reconoce P por que no esta en el ambito. Digamos que al cargar el nuevo form, pues la variable que cree en el form anterior, no esta en el nuevo. Como podria solucionar esto¿?

edit:
Creo que lo he solucionado poniendola como PUBLIC STATIC ¿es correcto?

cabron

P es una variable local declarada dentro de una función, no es posible (ni lógico) acceder a ella fuera de esa función.

La solución dependería un poco del diseño de tu aplicación, pero viendo que tienes dudas un poco básicas, y asumiendo que la aplicación maneja solo una peluquería, lo más sencillo que puedes hacer es declarar P como una variable global, para que se pueda acceder a ella desde cualquier lado de la aplicación.

GaN2

A ver, lo que tienes que hace es esto:

1º Se ejecuta el formulario principal. Te creas el nuevo objeto que sea del tipo Peluquería.

2º Ya tienes el formulario, ahora quieres añadir datos, con lo cual tienes que lanzar el formulario de datos, esto lo haces más o menos asi:

FormDatos formularioDatos = new FormDatos();
formularioDatos.Activate();
formularioDatos.ShowDialog();

3º En el formulario datos te creas un objeto que sea del tipo cliente por ejemplo, y recoges los datos del formulario. Al terminar lo cierras y haces que el programa principal chequee si se pulso el boton ok o añadir o como le quieras llamar. Si se pulso haces el siguiente paso.

4º Llamas a un metodo que sea dameDatos() del formulario de Datos, algo asi:

tipoCliente dameDatos(){
        return cliente;
}

Después los recoges en el formulario principal.

tipoCliente nuevoCliente = formularioDatos.dameDatos();

Y los añades a la peluquería como has hecho tu.


Seguramente me explico como el culo, pero más o menos lo puedes hacer asi, este curso hice algo parecido a lo tuyo pero con una agenda de contactos con BBDD Access (si, Access, es una mierda pero es sencillo) y varios formularios y asi salía. Si necesitas cualqueir cosa no dudes en decirmelo.

bLaCkH0Le

Gracias Gan2 voy a probar ais como me dices. Otra duda que tengo, es como mostrar la informacion de la clase, para mostrar la info de los distintos clientes. Necesito una especie de datagridView con un dataset pero no tengo ni idea la verdad. Sabes tu algo

GaN2

Yo usé un listView, que es lo que nos pedían en el trabajo, pero vamos, que es facilito de implementar y de usar.

bLaCkH0Le

Gan2 me peudes pegar el codigo para meter datos en un listview? necesito meter los datos de cada cliente. gracias.

GaN2

Lo que tienes que hacer es crearte un metodo que se llame posicionar (u otro nombre), y cada vez que agregas algún cliente en la lista de clientes (que será un array o una colección o lo que sea), llamar a ese metodo para posicionar el listView (es decir, meterle los datos). Prueba con esto:

public void posicionar()
{
     lista.Items.Clear();
     for (int i = 1; i < listaTelefonos.numeroDeRegs(); i++)
     {
           CCliente obj = listaClientes.leerRegistro(i);
           ListViewItem item = new ListViewItem(i.ToString("D3"), 0);
           item.SubItems.Add(obj.obtenerNombre());
           item.SubItems.Add(obj.obtenerTelefono().ToString());
           item.SubItems.Add(obj.obtenerDireccion());
           lista.Items.AddRange(new ListViewItem[] { item });

}
} 

En donde lista es el nombre de tu listView.

bLaCkH0Le

edit:

he logrado que me funcione, el unico inconveniente que tengo ahora es que en el primer campo me muestra 0 1 2 de esta forma

nombre apellidos telefono
0 antonio hernandez
1
2

GaN2

Vale, entonces pon en vez de :

ListViewItem item = new ListViewItem(i.ToString("D3"), 0); 

esto:

ListViewItem item = new ListViewItem();

Asi creo que no te pondra el numero delante.

bLaCkH0Le

Gan2 muchas gracias por la ayuda, me va fenomenal el listview. Para la persistencia he usado ficheros binarios y me carga los datos y demas.

El problema que me surge ahora es que necesito seleccionar un objeto del listview para acto seguido darle al boton borrar y borrar ese elemento. como puedo saber que fila a sido seleccionada en el listview ¿?

GaN2

Ufff, eso ya no tengo ni idea xD Yo lo que hacia es que en el formulario de insertar datos también pudiera borrar. Para hacer lo que pides creo (y simplemente creo, porque no tengo mucha idea) que tienes que usar un DataGrid o algo asi, en vez del listview.

bLaCkH0Le

seria joderlo todo xDDDD

Usuarios habituales

  • bLaCkH0Le
  • GaN2
  • cabron