¿Cómo Obtener el tamaño del área de trabajo de un formulario MDI?

25/10/2007 - 18:57 por José Luis | Informe spam
Hola a todos. Estoy intentando obtener el tamaño del área de trabajo de un
formulario MDI, pero no sé como hacerlo, ya que .Size me da el tamaño del
form, y no encuentro ninguna otra manera (propiedad o método para
recuperarlo).


Gracias

Preguntas similare

Leer las respuestas

#1 AngelGarza
25/10/2007 - 20:50 | Informe spam
Jose Luis, que tal.

Revisa si la propiedad ClientSize de la forma te es de utilidad. Ya que esta
propiedad te da el tamaño de la forma excluyendo borders y la barra de
titulo.

Saludos

"José Luis" wrote:

Hola a todos. Estoy intentando obtener el tamao del rea de trabajo de un
formulario MDI, pero no s como hacerlo, ya que .Size me da el tamao del
form, y no encuentro ninguna otra manera (propiedad o mtodo para
recuperarlo).


Gracias

Respuesta Responder a este mensaje
#2 José Luis
26/10/2007 - 10:56 | Informe spam
No me vale, además tengo un menustrip y varios toolstrip :(

¿Alguna otra idea?

Gracias

"AngelGarza" escribió en el mensaje
de noticias news:
Jose Luis, que tal.

Revisa si la propiedad ClientSize de la forma te es de utilidad. Ya que
esta
propiedad te da el tamaño de la forma excluyendo borders y la barra de
titulo.

Saludos

"José Luis" wrote:

Hola a todos. Estoy intentando obtener el tamao del rea de trabajo de un
formulario MDI, pero no s como hacerlo, ya que .Size me da el tamao del
form, y no encuentro ninguna otra manera (propiedad o mtodo para
recuperarlo).


Gracias

Respuesta Responder a este mensaje
#3 AngelGarza
26/10/2007 - 17:45 | Informe spam
Jose Luis, lo que se me ocurre es hacer algun metodo que calcule el alto y
ancho de tu forma tomando en cuenta el espacio que ocuparian tus controles
como menustrips, toolstrips:

algo asi:
//campos a nivel forma
int AlturaControles = 0;
int AnchoControles = 0;
int AreaTrabajoAltura = 0;
int AreaTrabajoAncho = 0;

//Metodo para calculo de area de trabajo
public void CalculoAreaTrabajo()
{
AlturaControles = 0;
AnchoControles = 0;

foreach (Control c in this.Controls)
{
if (c is MenuStrip || c is ToolStrip)
{
if (c.Dock == DockStyle.Left || c.Dock == DockStyle.Right)
AnchoControles += c.Width;
else if (c.Dock == DockStyle.Bottom || c.Dock ==
DockStyle.Top)
AlturaControles += c.Height;
else if (c.Dock == DockStyle.Fill)
{
AlturaControles += c.Height;
AnchoControles += c.Width;
}
}
}

AreaTrabajoAltura = this.ClientSize.Height - AlturaControles;
AreaTrabajoAncho = this.ClientSize.Width - AnchoControles;
}


Y ya este método llamarlo desde el Load de la forma y desde el evento
SizeChanged de la forma para que se mantenga actualizado.

Si te funcionara y es un comportamiento a usar en varias formas, igual te
conviene ponerlo en una forma base y las demas heredar de esa para que no
tengas que copiar el codigo en cada una.

De igual manera y quisieras considerar algun otro control, solo agregarlo a
las condiciones ya que ahorita el metodo solo toma en cuenta menustrips y
toolstrips.

Saludos y espero te pueda ser de utilidad.

"José Luis" wrote:

No me vale, además tengo un menustrip y varios toolstrip :(

¿Alguna otra idea?

Gracias

"AngelGarza" escribió en el mensaje
de noticias news:
> Jose Luis, que tal.
>
> Revisa si la propiedad ClientSize de la forma te es de utilidad. Ya que
> esta
> propiedad te da el tamaño de la forma excluyendo borders y la barra de
> titulo.
>
> Saludos
>
> "José Luis" wrote:
>
>> Hola a todos. Estoy intentando obtener el tamao del rea de trabajo de un
>> formulario MDI, pero no s como hacerlo, ya que .Size me da el tamao del
>> form, y no encuentro ninguna otra manera (propiedad o mtodo para
>> recuperarlo).
>>
>>
>> Gracias
>>


Respuesta Responder a este mensaje
#4 José Luis
26/10/2007 - 22:46 | Informe spam
Gracias, es lo que esperaba NO tener que hacer :).

De todas maneras, como es el form principal de 1 aplicación MDI, no voy a
necesitar que ningún otro form herede esta funcionalidad.


Saludos
"AngelGarza" escribió en el mensaje
de noticias news:
Jose Luis, lo que se me ocurre es hacer algun metodo que calcule el alto y
ancho de tu forma tomando en cuenta el espacio que ocuparian tus controles
como menustrips, toolstrips:

algo asi:
//campos a nivel forma
int AlturaControles = 0;
int AnchoControles = 0;
int AreaTrabajoAltura = 0;
int AreaTrabajoAncho = 0;

//Metodo para calculo de area de trabajo
public void CalculoAreaTrabajo()
{
AlturaControles = 0;
AnchoControles = 0;

foreach (Control c in this.Controls)
{
if (c is MenuStrip || c is ToolStrip)
{
if (c.Dock == DockStyle.Left || c.Dock ==
DockStyle.Right)
AnchoControles += c.Width;
else if (c.Dock == DockStyle.Bottom || c.Dock => DockStyle.Top)
AlturaControles += c.Height;
else if (c.Dock == DockStyle.Fill)
{
AlturaControles += c.Height;
AnchoControles += c.Width;
}
}
}

AreaTrabajoAltura = this.ClientSize.Height - AlturaControles;
AreaTrabajoAncho = this.ClientSize.Width - AnchoControles;
}


Y ya este método llamarlo desde el Load de la forma y desde el evento
SizeChanged de la forma para que se mantenga actualizado.

Si te funcionara y es un comportamiento a usar en varias formas, igual te
conviene ponerlo en una forma base y las demas heredar de esa para que no
tengas que copiar el codigo en cada una.

De igual manera y quisieras considerar algun otro control, solo agregarlo
a
las condiciones ya que ahorita el metodo solo toma en cuenta menustrips y
toolstrips.

Saludos y espero te pueda ser de utilidad.

"José Luis" wrote:

No me vale, además tengo un menustrip y varios toolstrip :(

¿Alguna otra idea?

Gracias

"AngelGarza" escribió en el
mensaje
de noticias news:
> Jose Luis, que tal.
>
> Revisa si la propiedad ClientSize de la forma te es de utilidad. Ya que
> esta
> propiedad te da el tamaño de la forma excluyendo borders y la barra de
> titulo.
>
> Saludos
>
> "José Luis" wrote:
>
>> Hola a todos. Estoy intentando obtener el tamao del rea de trabajo de
>> un
>> formulario MDI, pero no s como hacerlo, ya que .Size me da el tamao
>> del
>> form, y no encuentro ninguna otra manera (propiedad o mtodo para
>> recuperarlo).
>>
>>
>> Gracias
>>


Respuesta Responder a este mensaje
#5 Alberto Poblacion
27/10/2007 - 10:36 | Informe spam
"José Luis" wrote in message
news:eXO$
No me vale, además tengo un menustrip y varios toolstrip :(

¿Alguna otra idea?



Podrías colocar en el formulario un Panel con la propiedad Dock=Fill para
que ocupe todo el espacio disponible, y entonces preguntar por el .Size del
Panel.
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida