Evitar pasar por los formularios hijos de un formulario MDI con las teclas

05/09/2006 - 10:33 por [Juanjo] | Informe spam
Hola grupo:

Supongo que esta pregunta ha sido formulada X veces, pero no encuentro
la respuesta.

Tengo un formulario MDI, y no quiero que el usuario se pueda mover por
las ventanas hijas
con las teclas CONTROL+TABULADOR o CONTROL + F6.

Hay alguna forma?

Muchas gracias.

Preguntas similare

Leer las respuestas

#1 RAlvare
06/09/2006 - 22:08 | Informe spam
"[Juanjo]" escribió en el mensaje
news:
Hola grupo:

Supongo que esta pregunta ha sido formulada X veces, pero no encuentro
la respuesta.

Tengo un formulario MDI, y no quiero que el usuario se pueda mover por
las ventanas hijas
con las teclas CONTROL+TABULADOR o CONTROL + F6.

Hay alguna forma?




Puedes controlar el evento childForm.KeyDown

private void ShowNewForm(object sender, EventArgs e)

{

Form childForm = new Form();



childForm.MdiParent = this;

childForm.KeyDown += new KeyEventHandler(childForm_KeyDown);

childForm.Show();

}

void childForm_KeyDown(object sender, KeyEventArgs e)

{

//Si se ha pulsado la tecla control:

if (e.Control)

{

MessageBox.Show("pulsado ctrl");

e.SuppressKeyPress = true;

}

}

De esta manera se suprime cualquier pulsación de la tecla CONTROL. Si lo que
quieres es controlar específicamente un

Ctrol + F6 o Ctrol + Tab , eso me lo voy a mirar a ver si lo puedes hacer.
Respuesta Responder a este mensaje
#2 [Juanjo]
07/09/2006 - 00:07 | Informe spam
muchas gracias. voy a probarlo.
"RAlvare" escribió en el mensaje
news:

"[Juanjo]" escribió en el mensaje
news:
Hola grupo:

Supongo que esta pregunta ha sido formulada X veces, pero no encuentro
la respuesta.

Tengo un formulario MDI, y no quiero que el usuario se pueda mover por
las ventanas hijas
con las teclas CONTROL+TABULADOR o CONTROL + F6.

Hay alguna forma?




Puedes controlar el evento childForm.KeyDown

private void ShowNewForm(object sender, EventArgs e)

{

Form childForm = new Form();



childForm.MdiParent = this;

childForm.KeyDown += new KeyEventHandler(childForm_KeyDown);

childForm.Show();

}

void childForm_KeyDown(object sender, KeyEventArgs e)

{

//Si se ha pulsado la tecla control:

if (e.Control)

{

MessageBox.Show("pulsado ctrl");

e.SuppressKeyPress = true;

}

}

De esta manera se suprime cualquier pulsación de la tecla CONTROL. Si lo
que quieres es controlar específicamente un

Ctrol + F6 o Ctrol + Tab , eso me lo voy a mirar a ver si lo puedes hacer.


Respuesta Responder a este mensaje
#3 RAlvare
07/09/2006 - 00:41 | Informe spam
Tengo un formulario MDI, y no quiero que el usuario se pueda mover por
las ventanas hijas
con las teclas CONTROL+TABULADOR o CONTROL + F6.

Hay alguna forma?






He hecho alguna prueba más y veo lo siguiente:

//Manejadores de eventos y llamada al formulario hijo

childForm.KeyDown += new KeyEventHandler(childForm_KeyDown);

childForm.KeyUp += new KeyEventHandler(childForm_KeyUp);



childForm.Show();

}


//Cuando se pulse la tecla "CONTROL" se descartaría la pulsación

void childForm_KeyDown(object sender, KeyEventArgs e)

{


if (e.KeyCode == Keys.ControlKey)

{

e.SuppressKeyPress = true;

}

}




//Cuando se suelte la tecla "F6" se descartaría la pulsación

void childForm_KeyUp(object sender, KeyEventArgs e)

{

if (e.KeyCode == Keys.F6)

{ e.SuppressKeyPress = true; }

}



Pero en realidad, cuando se pone en ejecución el programa, la combinación de
teclas CTRL + F6 sigue funcionando y se cambia de

una ventana hija a otra a pesar del teórico descarte de pulsaciones. ¿Quien
nos puede explicar esto y aportar una solución?

¿Hay que tirar de P/Invoke?



Saludos.

RAlvare.

Lugones.Asturias.
Respuesta Responder a este mensaje
#4 RAlvare
07/09/2006 - 14:24 | Informe spam
En esta consulta a un foro se ve cual va a tener que ser el camino para que
Ctrl + F6
no haga lo que normalmente hace, llamada a código no administrado, P/Invoke:

http://www.thescripts.com/forum/thread271776.html

Yo en esos terrenos del P/Invoke aún no he pisado... si consigues resultados
me lo cuentas.

Tengo un formulario MDI, y no quiero que el usuario se pueda mover
por las ventanas hijas
con las teclas CONTROL+TABULADOR o CONTROL + F6.

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