Foros del Web » Programación para mayores de 30 ;) » .NET »

Problema entre clases

Estas en el tema de Problema entre clases en el foro de .NET en Foros del Web. Hola a todos. Bueno, el siguiente paso que quiero hacer en la aplicación es en la creación de controles personalizados. En mi caso, quisiera personalizar ...
  #1 (permalink)  
Antiguo 30/12/2010, 02:18
 
Fecha de Ingreso: marzo-2010
Mensajes: 191
Antigüedad: 14 años, 1 mes
Puntos: 3
Exclamación Problema entre clases

Hola a todos.

Bueno, el siguiente paso que quiero hacer en la aplicación es en la creación de controles personalizados.

En mi caso, quisiera personalizar el control "MenuStrip", que se encarga de insertar la "Barra de menú" en la aplicación.

Como todos mis formularios tienen MenuStrip, es una desidia repetir código en cada formulario, con lo que, si creo una biblioteca de clase con el control MenuStrip y en ella inserto todo el código que quiero que lleve, es muchísimo más cómodo que no poner todo el código en cada formulario (con su consecuente aumento de peso)

El caso es que tengo el proyecto base (la aplicación principal) y otro proyecto que se llama "Barra_Menú", que es donde pongo el proyecto.

Pero el proyecto "Barra_Menú" no me deja guardarlo porqué me salen las siguientes lineas:







Pero lo que quisiera es, crear una dll con este codigo (aunque las lineas estén, quisiera que me haga el dll) para que, cuando referencie la dll, las lineas ya funcionarán porqué el proyecto base tiene lo que necesita.

Otra solución es crear este proyecto directamente en la aplicación base, pero entonces si quiero usar esta barra de menu en otro proyecto diferente (o hacer tareas de mantenimiento) no la podré usar, porqué todos los cambios que realice, se cambiarán en la aplicación base.

Se me entiende??

Muchisimas gracias por la ayuda

Saludos
  #2 (permalink)  
Antiguo 30/12/2010, 04:06
 
Fecha de Ingreso: marzo-2010
Mensajes: 191
Antigüedad: 14 años, 1 mes
Puntos: 3
Respuesta: Problema entre clases

Solucionado.

He añadido la barra menu al proyecto base como clase de "Control de usuario". He programado los eventos y funcionan a la perfección.

He añadido el control nuevo desde el "Cuadro de herramientas" --> "Componentes del proyecto" y la he anclado arriba para que se integre. Funciona OK.

El caso es que ahora me asalta una duda. Como habréis visto arriba, un ToolStrip es para cerrar sesion. Cuando cierro sesión, cierro el formulario activo y vuelvo al formulario de inicio para loguearte.

Pero cuando pongo me.close(), me dispara, ya que, como es lógico, la clase no sabe que formulario es.

He probado de hacer de todo pero no se como saber que formulario es el que está abierto actualmente para que lo cierre.

Por ejemplo
Código VB .NET:
Ver original
  1. With Form_Inici
  2.      'tancarem la sessió d'aquest usuari i tornarem al menú principal
  3.      .Show()
  4.      .txt_nom.Text = ""
  5.      .txt_contrasenya.Text = ""
  6. End With

He probado de hacer lo siguiente

Código VB .NET:
Ver original
  1. for each formulario in system.windows.forms.form
  2.      formulario.close
  3. next

Pero me da error en system.windows.forms.form

También he probado

Código VB .NET:
Ver original
  1. Application.restart()

Pero no es factible ya que aparece la splash_screen

En resumen, el problema está en que el control no sabe que formulario es...

Que se podría hacer para que cerrase el form actual (sea cual sea) y volviese a la pantalla de inicio?
  #3 (permalink)  
Antiguo 30/12/2010, 04:48
 
Fecha de Ingreso: marzo-2010
Mensajes: 191
Antigüedad: 14 años, 1 mes
Puntos: 3
Respuesta: Problema entre clases

Solucionado.

En vez de me.close, como estaba antes, cuando cada formulario tenía su menú (que formaba parte del propio form), ahora hemos de poner me.parentform.close() ya que ahora el control tiene que saber en que formulario está, no como antes.

Saludos

Etiquetas: dll
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:26.