Crear Controles En tiempo de ejecucion c# y gaurdalos

Iniciado por mr_marley, 23 Octubre 2011, 09:55 AM

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

mr_marley

Hola  a todos tengo un gran problema y me gustaria que me ayudaran
el detalle es que ocupo hacer botones en tiempo de ejecucion en c# y guardarlos..
abrir el form y crear un  boton colocarlo donde yo quiera y darle guardar.. cuando vuela a ejecutar el form el botoan antes creado tiene que estar donde lo pude..
estoy trabajando con c# en app windows. y BD mysql
nose como guardar los botones eso es lo  me tiene mas pendiente...
asimilemos que es como un layaout donde le doy crear layaout  y cree boton lo coloque donde quiero y luego otro y lo ponga en donde quiera y cuanco le de guardar layaout. guarde los botones que cree  pocicion y todo...
cuando salga  y vuela entrar le de ver layaout pueda ver los botes creados antes..
muchas gracias espero ideas... ayuda

Cuántas muertes más serán necesarias para darnos cuenta de que ya han sido demasiadas  By: Marley87

$Edu$

Button boton = new Button

boton.Top = ..
boton.Left = ..
boton.Height = ..
boton.Wight = ..
boton.Text = ..
Me.Controls.Add(boton)

Algo asi es creo

mr_marley

si efectivamente asi se crea la duda o lo complicado como guardarlo
para cuando lo abra este el boton
Cuántas muertes más serán necesarias para darnos cuenta de que ya han sido demasiadas  By: Marley87

$Edu$

Te refieres a crear el evento?

Código (csharp) [Seleccionar]

boton.Click += new System.EventHandler(this.Boton_Click);


Y tenias que haber creado antes el evento ese:

Código (csharp) [Seleccionar]

  private void Boton_Click(object sender, EventArgs e)
        {
         }


Pero fijate que tambien se podria crear una matriz de botones a lo que tendrias que cambiar la declaracion, luego hacer un bucle para los botones que crearas, y en el evento Botones_Click(object sender, EventArgs e) tendrias que usar el sender para saber que boton es el qe se clickeo

Keyen Night

Lo que te dijo $Edu$ es para enlazar los eventos eso te va a servir tambien, para guardar los controles, en programación debes jugar siempre al vivo, ya que no existen todas las herramientas específicas para hacer una acción, es como si para un juego, por ejemplo GTA (Un juego que conoce todo mundo), existiese una función llamada RobarCarro en el Visual Studio. Es aquí dondé uno debe pensar que debo hacer para solucionar el problema, la configuración que brinda de forma predeterminado el Visual Studio no deja almacenar el tipo Control, así que no puedes guardar un Control, pero si Deja Almacenar String y String(), entonces puedes almacenar las propiedades del Control, como Name, Text, Parent (Nombre del Parent), Location, Size, y luego al cargar la configuración crear el control, hay otra forma no más difícil pero si más complicada, que sería crear un clase que cargara a partir de un archivo los controles, en el archivo estrian ordenadas las propiedades de cada control y seccionadas para separar un control de otro.
La Fé Mueve Montañas...
                                    ...De Dinero

La programación es más que un trabajo es más que un hobby es una pasión...

Novlucker

#5
Hay una manera más sencilla :P
Se podría utilizar un BinaryFormatter para serializarlos en archivos (también podría ser XML), para luego leer y volver a levantar los controles ::)

Saludos

Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD

"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein

Keyen Night

#6
Esa también es una buena opción no lo había pensado pero se basa en lo mismo debes transformar ese control en texto que puedas almacenar en un archivo.

La clase control es serializable?

@Down: Edito, con texto me referia a la salida de Serialize disculpen si se entendio mal :-[
La Fé Mueve Montañas...
                                    ...De Dinero

La programación es más que un trabajo es más que un hobby es una pasión...

Novlucker

Ya, pero lo que digo es que no hay que crear ninguna clase, y son 5 líneas

Saludos
Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD

"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein

4rkn63l

Bueno, creo que lo mejor seria guardar la info de los controles como el texto,nombre,posicion en el formulario,tamano,etc. en un archivo XML, luego seria recuperar esa info del .xml con la ayuda de un DataSet y un DataTable, por cada registro de control leido vas creando un nuevo control con las propiedades obtenidas, despues lo ideal seria agregarlos a un contenedor o panel.

mr_marley

Muchas Gracias Por responder Ya resolvi el probelma lo hice lago similar como me dicen aqui
lo que hice fua  crear el botones que necesito entiempo de ejecucion
y cuando le doy guardar hago un recorrido de cada control en el form y mando
a guardar el name, lo ancho, alto y posicion  de cada boton..
luego cuando cuando abro el form( que es cuando quiero que muestre los que anteriormente hice)
traego todos los valores de la base de datos y con un recorrido voy creando los botones con los valores antes guardados name, lef top, posicion..
y esta ala perfeccion..
hora  eslo del archivo xml. megustaria saberlo. si laguiente me tiene un ejemplo de como paso los valores que son los mismos name lef top , posicion, yluego cuando carge el form leer ese mismo archivo xml y crearlos nuevamente
Gracias :xD
Cuántas muertes más serán necesarias para darnos cuenta de que ya han sido demasiadas  By: Marley87