[C#] Disabilitare menu Form MDI da Form Figlio.

lunedì 05 febbraio 2007 - 23.32

Technoboyz Profilo | Newbie

Salve ragazzi, mi vergogno a postare questa domanda.
E' da qualche giorno che inizio a programmare in C# provenendo dal VB6.

Situazione:
Cliccando da menu apro un form figlio e disabilito il menu;
dalla chiusura del form figlio devo riabilitare il menu.
Come accedo al Menu del form Principale dal form figlio?
Bye

gigi90 Profilo | Senior Member

Prima di accedere al form figlio in quest'ultimo dovresti dichiarare una cosa del genere:

FormPadre frmPadre;//Dove il tipo FormPadre e la classe del tuo form padre.

quindi prima di aprire il form filgio dal form padre fai così:

frmfiglio.frmPadre=this;//Assegni un riferimento di form padre a frmFiglio

in questo modo puoi manipolare gli oggetti di frmPadre e quindi abilitare e diablitare tutti gli oggeti che desideri di formpadre riferendoti alla variabile frmPadre che hai creato in formfiglio.

Ciao

Technoboyz Profilo | Newbie

Ha funzionato per un po', poi all'improvviso mi da questo warnning:
"Impossibile assegnare un valore diverso al campo 'Progetto1.FormFiglio.pFP'. Il valore predefinito è null."

Avevo inserito nella classe FormFiglio "FormPadre pFP;"
ma dandogli un valore null, non serve più a nulla.
Cavolo all'inizio ha funzionato. Cosa ho manomesso?
Ho anche scritto un nuovo progetto giusto con le due Form, ma ora da lo stesso errore!

Penso che ti sia confuso scrivendo:
"frmfiglio.frmPadre=this;//Assegni un riferimento di form padre a frmFiglio"
forse intendevi:
"frmfiglio.MdiParent=this;//Assegni un riferimento di form padre a frmFiglio"

VeNoMiS Profilo | Newbie

Ciao io utilizzo questo metodo

private void Carica(Form ObjForm)
{
Cursor = System.Windows.Forms.Cursors.WaitCursor;
try
{
if (this.ActiveMdiChild != null)
this.ActiveMdiChild.Close();
ObjForm.MdiParent = this;
ObjForm.Show();
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
Cursor = System.Windows.Forms.Cursors.Default;
}
}

nel caso ci sia già una finestra figlio attiva la chiude

Technoboyz Profilo | Newbie

Il mio problema, non è quello di aprire una Form Figlio, ma quella di gestire da qui il menustrip della Form Padre.
Cioè devo disabilitare il menu che chiama la Form Figlio (qusto lo faccio direttamente dall'evento click del menu)
e riattivare il menu alla chiusura della Form Figlio (intendevo usare l'evento di chiusura);
ma ovviamente da li la Form Padre non è visibile.
Bye

VeNoMiS Profilo | Newbie

capisco ma se modifichi la proprietà dialogresult sul bottone di uscita della form
e cambi la funzione di carica del form in maniera che ti restituisca un bool (true=form chiuso)
ti basta un semplice:

if(carica(child))
'istruzioni


Oppure invece di usare una finestra MDI usi uno showdialog il quale blocca l'esecuzione del frm chiamante ed esegue SOLAMENTE quello chiamato, una volta chiuso il form figlio, procede con il padre.

Technoboyz Profilo | Newbie

Non mi piace come soluzione, anche perchè se non erro, in questo modo disabiliti anche la possibilità di abbassare la finestra padre o spostarla sul desktop.
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5