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

Problemas con forms MDI???

Estas en el tema de Problemas con forms MDI??? en el foro de .NET en Foros del Web. Hola que tal a todos, soy nuevo en este foro y espero encontrar solución a mis dudas. El problema que tengo es el siguiente: Tengo ...
  #1 (permalink)  
Antiguo 05/08/2009, 16:06
 
Fecha de Ingreso: agosto-2009
Mensajes: 5
Antigüedad: 14 años, 9 meses
Puntos: 0
Problemas con forms MDI???

Hola que tal a todos, soy nuevo en este foro y espero encontrar solución a mis dudas.
El problema que tengo es el siguiente:
Tengo MDI padre el cual aloja a hijos, en le MDI padre tengo un menustrip
el metodo Load del form padre hace lo siguiente:
1.Oculto el menustrip general,
2.Cargo un formulario de validación
Dentro del form Validacion le doy click al boton ValidarUsuario y si lo encuentra en mi DB cierro el form Validacion y quiero mostrar el menustrip del form padre, ya que lo oculte desde el principio.
Es lo que no puedo, mostrarlo desde el código del botón ValidarUsuario del MDI form Validacion???
Ya intente llamar a un metodo que créo en la clase form Padre desde el botón ValidarUsuario pero no hace nada??(a este metodo le pongo menuPrincipal.Visible = true)claro que para llamarlo tengo que crear una nueva instancia de la clase form Padre, pero es necesario crear otra instancia?? siendo que ya tengo creado el form Padre??
Lo que quiero en simples palabras es que cuando cierre el MDI hijo, me ponga visible el menustrip que oculté al cargar el formulario Padre, se los agradeceria mucho. Espero su respuesta.
  #2 (permalink)  
Antiguo 06/08/2009, 15:52
Avatar de jaullo  
Fecha de Ingreso: abril-2009
Mensajes: 994
Antigüedad: 15 años
Puntos: 30
Respuesta: Problemas con forms MDI???

No te sirve por una sencilla razon, si estas ejecutando el proceso para mostrar el menu desde el form padre este no esta haciendo load. Es decir para que te funcione cuando levantas tu MDI deberias llamar alguna funcion que se encuentre en el login.

Ahora mi recomendacion es que no abras el MDI y luego solicites el password, esto no es lo comun, lo que deberias hacer es al iniciar tu proyecto pedir el login si es true muestras el MDI sino te sales.

De esta forma puedes controlar desde tu formulario login no solo el menu completo sino cada opcion dependiendo del rol de la persona que esta ingresando.

Saludos,
  #3 (permalink)  
Antiguo 07/08/2009, 09:09
 
Fecha de Ingreso: agosto-2009
Mensajes: 5
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: Problemas con forms MDI???

Hola que tal jaullo, gracias por tu respuesta.
Mira te cuento, se supone que cuando inicio la aplicación se carga el MDI el cual contine un menustrip que lo pongo en Visible = false y un panel, al mismo tiempo en le metodo Load del MDI creo una instancia del Hijo_Validación y la pongo como hija, por consiguiente el foco lo tiene el hijo en este momeno vdd??, bueno a la hora de que el usuario es valido, lo que hago es cerrar el Hijo_Validación pero antes de cerrarlo quiero que me muestre el menustrip del MDI, es lo que no logro conseguir?? accesar al menustrip del MDI desde el Hijo antes de cerrarlo.
Al crear una instancia del MDI dentro del Hijo, me deberia permitir manipular los atributos,controles y metodos del MDI pero no me los muestra aunque esten como públicos.
Ahora se supone que ya no tengo que crear una instancia del MDI puesto que ya esta abierto, hay forma de que, nosé, pornerle el foco de nuevo dentro del Hijo y manipular el menustrip del MDI antes de cerrar el Hijo???
Con fromularios normales si se puede solo instanciando una clase del Form1 en el Form2 y puedo accesar a los metodos, en realidad no se si tambien a los controles,no lo he probado?,pero en este caso al hacer lo mismo con el MDI e Hijo, no puedo accesar ni a los metodos del padre??.

Ma agrada la otra alternativa que me das, y por el momento lo haré asi, pero si me gustaria salir al menos de dudas con respecto a lo anterios, pienso que se debe poder.
Gracias nuevamente.
  #4 (permalink)  
Antiguo 10/08/2009, 08:15
Avatar de jaullo  
Fecha de Ingreso: abril-2009
Mensajes: 994
Antigüedad: 15 años
Puntos: 30
Respuesta: Problemas con forms MDI???

Ok. Cuano haces el load de tu MDI y cargas tu form hijo para mostrarlo, pues si debería tener el foco.

Si quieres mostrar tu menú en el MDI, deberias ponerlo visible antes de cerrar tu formulario de "login", de lo contrario no te va a servir, es decir algo como así:
menustrip1.visible=true
frmlogin.close

Ahora, sino te muestra los controles podrías probar haciendo una referencia a tu formulario MDI, digamos que tienes un Form1 que posee tu MDI, intentado con algo así:
Form1.menustrip1.visible=true
frmlogin.close

En la mayoría de los casos esto debería solucionarte el problema, si usas algo de otro Form deberías indicar cual.

En el siguiente link te deje un ejemplo (pues acá no puedo subir archivos), es algo rápido que hice y talvez podría darte una idea de lo que te comento:
http://www.myforonet.co.cc/viewtopic.php?f=5&t=18

Espero te pueda ayudar,

Saludos,
  #5 (permalink)  
Antiguo 10/08/2009, 13:14
 
Fecha de Ingreso: agosto-2009
Ubicación: Sinaloa, Mexico
Mensajes: 17
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: Problemas con forms MDI???

has algo como estto en el menu
private void frmMenu_Load(object sender, EventArgs e)
{
frmAcceso x = new frmAcceso();
x.ShowDialog();

if (x.DialogResult==DialogResult.OK)
{

this.MenuPrincipal.Enabled = true;
this.toolDirectos.Enabled = true;

lbUsuario.Text = generales.NomUsuario;
lbTipo.Text = generales.ElNivel;
lbLocalidad.Text = generales.NomLocalidad;

this.Text = "..:: Menú Princial || EMPRESA: " + generales.NomEmpresa + " ::..";
habilitaMenu(generales.Nivel);

}

}


y desde el boton de validar es algo asi :


generales.instancia="sqlexpress";
generales.servidor="huggo";
//generales.Noempresa = "01";

generales.SetCadena(generales.servidor,generales.i nstancia, gUsuario.Text.Trim(), gContraseña.Text.Trim());

SqlConnection oCn = new SqlConnection(generales.getCadena());

string sql = "SELECT idusuario, nombrelargo, nivel, " +
"idlocalidad, nomlocalidad, nicksql, empresa, nomempresa "+
"FROM vw_acceso WHERE nicksql=@nicksql";

SqlCommand oCmd = new SqlCommand(sql, oCn);

//oCmd.Parameters.AddWithValue("@empresa", generales.empresa);
oCmd.Parameters.AddWithValue("@nicksql", gUsuario.Text.Trim());

try
{
oCn.Open();
SqlDataReader datos = oCmd.ExecuteReader();
if (datos.HasRows)
{
if (datos.Read())
{
generales.NomUsuario = datos["nombrelargo"].ToString();
generales.NoUsuario = datos["idusuario"].ToString();
generales.Nivel = datos["nivel"].ToString();
generales.NoLocalidad = datos["idlocalidad"].ToString();
generales.NomLocalidad = datos["nomlocalidad"].ToString();
generales.Noempresa = datos["empresa"].ToString();
generales.NomEmpresa = datos["nomempresa"].ToString();
oCn.Close();
cerrar = true;
this.DialogResult = DialogResult.OK;
this.Close();
}

}
else
{
MessageBox.Show("Usuario NO registrado en el Sistema", "Informacion del Sistema", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
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 09:18.