Numerar ventanas MDI

08/09/2005 - 13:19 por abibiano | Informe spam
Tengo una aplicación MDI en la que permito abrir varias instancias de la
misma ventanas hijas.

Todas las ventanas hijas heredan de una ventana plantilla.

Mi idea es codificar en el evento Load de las ventanas de forma que añanda
al nombre de cada ventana un número correlativo (solo correlativo para la
misma ventana). Por ejemplo, si tengo la ventana "usuarios" y "maquinas", y
abro 3 instancias de la ventana usuarios, y 2 de la ventana maquinas, debería
tener 5 ventnas abiertas con los siguientes nombres:
Usuarios 1
Usuarios 2
Usuarios 3
Maquinas 1
Maquinas 2

Bien, esto lo consiguo poniendo una variable static en la ventana, y sumando
un 1 al abrir la ventana y restandolo al cerrar:

evento LOAD

this.Text = this.Text + " " + NumeroVentana;
NumeroVentana++;

donde NumeroVentana es private Static.

Mi pregunta es si existe alguna manera de codificar esto en la plantilla de
todas las ventanas, en lugar de en cada ventana herdedada.

Lo he probado, y como la plantilla comparte la variable estatica con todas
las ventanas, no funciona bien.

¿Alguna idea?

Preguntas similare

Leer las respuestas

#1 Octavio Hernandez
08/09/2005 - 15:15 | Informe spam
A,

Sí que se puede hacer algo... Yo le pondría a la ventana hija MDI base,
además de la variable estática NumeroVentana (el contador de la cantidad de
ventanas que se van creando) una variable no estática (de instancia) que se
inicializa en el constructor de esa clase base. Y en el constructor
generaría el número y asignaría el título. Algo así:
private static int contador = 0;

private int numero;

public HijaBase()

{

InitializeComponent();

contador++;

numero = contador;

this.Text = "Ventana " + numero;

}

// ...

Slds - Octavio





"abibiano" escribió en el mensaje
news:
Tengo una aplicación MDI en la que permito abrir varias instancias de la
misma ventanas hijas.

Todas las ventanas hijas heredan de una ventana plantilla.

Mi idea es codificar en el evento Load de las ventanas de forma que añanda
al nombre de cada ventana un número correlativo (solo correlativo para la
misma ventana). Por ejemplo, si tengo la ventana "usuarios" y "maquinas",
y
abro 3 instancias de la ventana usuarios, y 2 de la ventana maquinas,
debería
tener 5 ventnas abiertas con los siguientes nombres:
Usuarios 1
Usuarios 2
Usuarios 3
Maquinas 1
Maquinas 2

Bien, esto lo consiguo poniendo una variable static en la ventana, y
sumando
un 1 al abrir la ventana y restandolo al cerrar:

evento LOAD

this.Text = this.Text + " " + NumeroVentana;
NumeroVentana++;

donde NumeroVentana es private Static.

Mi pregunta es si existe alguna manera de codificar esto en la plantilla
de
todas las ventanas, en lugar de en cada ventana herdedada.

Lo he probado, y como la plantilla comparte la variable estatica con todas
las ventanas, no funciona bien.

¿Alguna idea?
Respuesta Responder a este mensaje
#2 abibiano
08/09/2005 - 16:04 | Informe spam
Antes de nada gracias por responder... pero no acaba de funcionar.

Primero: Si pongo el código en el constructor en lugar de en el evento Load,
no se asigna el nuevo texto a la ventana (supongo que las ventanas heredadas
sobrescirben posteriormente el texto de la ventana después).

Segundo: Aunque use una variable de instancia entre medio, el resultado
sigue siendo el mismo. Todas las ventanas se me numeran de forma correlativa,
cuando en realidad quiero que solamente las ventanas de la misma classe se
numeren de forma correlativa.

¿alguna otra idea?
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida