PDA

View Full Version : [C#] Progettazione seconda form


FedericoT
13-08-2008, 14:00
Salve a tutti.
Sto sviluppando una piccola applicazione in C# utilizzando lo strumento Microsoft Visual C# 2005 Express Edition.
Cliccando su un pulsante ho fatto in modo di aprire una nuova form utilizzando questo codice:
Form form2 = new Form();
form2.Show();
A questo punto vorrei passare alla progettazione visuale in questa form, ma non so come fare. Qualcuno può aiutarmi?
Inoltre vorrei fare in modo che finchè la form2 è aperta, la form1 mi resti in secondo piano ma non sia utilizzabile.

Grazie anticipatamente.

avastreg
13-08-2008, 14:10
Inoltre vorrei fare in modo che finchè la form2 è aperta, la form1 mi resti in secondo piano ma non sia utilizzabile.


Per far ciò basta semplicemente che la form2 sia modale, ovvero invece di fare
form2.Show(), fai form2.ShowDialog() e il gioco è fatto.

Per la seconda domanda, non riesco a capire bene il problema :stordita:, cmq, invece di aggiungere direttamente queste due righe,

Form form2 = new Form();
form2.Show();

potresti andare nel tuo solution explorer e cliccare sul progetto con il destro. A questo punto, scegliendo Add, selezioni Windows Form cosi lui ti crea il file form con il designer già integrato e modificabile.

A quel punto, all'interno dell'evento click del bottone, scrivi semplicemente new nomeform().ShowDialog();

:)

FedericoT
13-08-2008, 15:00
Per far ciò basta semplicemente che la form2 sia modale, ovvero invece di fare
form2.Show(), fai form2.ShowDialog() e il gioco è fatto.

Per la seconda domanda, non riesco a capire bene il problema :stordita:, cmq, invece di aggiungere direttamente queste due righe,

Form form2 = new Form();
form2.Show();

potresti andare nel tuo solution explorer e cliccare sul progetto con il destro. A questo punto, scegliendo Add, selezioni Windows Form cosi lui ti crea il file form con il designer già integrato e modificabile.

A quel punto, all'interno dell'evento click del bottone, scrivi semplicemente new nomeform().ShowDialog();

:)

Grazie mille mi hai risolto il problema. Scusa ma siccome sono alle prime armi faccio domande un po' ingenue.

avastreg
13-08-2008, 15:42
Grazie mille mi hai risolto il problema. Scusa ma siccome sono alle prime armi faccio domande un po' ingenue.

ci mancherebbe ci passiamo tutti e fai bene a chiedere prima di diventare matto, è un attimo rispondere :D

FedericoT
13-08-2008, 15:54
ci mancherebbe ci passiamo tutti e fai bene a chiedere prima di diventare matto, è un attimo rispondere :D

Dopo aver creato la form con il comando new nomeform().ShowDialog() dentro all'evento di click di un pulsante, dovrei passare alla nuova form delle variabili che ho valorizzato nella prima form, solo che non me le riconosce.
Io le avevo inizializzate dentro alla classe della prima form.
Non so se devo inizializzarle da qualche altra parte o devo passarle alla seconda form quando la creo.

Grazie.

avastreg
13-08-2008, 16:11
Dopo aver creato la form con il comando new nomeform().ShowDialog() dentro all'evento di click di un pulsante, dovrei passare alla nuova form delle variabili che ho valorizzato nella prima form, solo che non me le riconosce.
Io le avevo inizializzate dentro alla classe della prima form.
Non so se devo inizializzarle da qualche altra parte o devo passarle alla seconda form quando la creo.

Grazie.

se ho capito bene, basta che le passi nel costruttore della seconda form.

FedericoT
13-08-2008, 16:52
se ho capito bene, basta che le passi nel costruttore della seconda form.

Scusa ma mi potresti fare un esempio perchè non riesco a capire come fare.
Ho provato in questo modo:
Nella form1 nell'evento di click del pulsante scrivo
new form2().ShowDialog(variabile1,variabile2,variabile3,.....);
Mentre nella form2 scrivo
public form2(variabile1,variabile2,variabile3,...)
{
InitializeComponent();
}

Dove sbaglio?
Grazie

avastreg
13-08-2008, 17:48
Scusa ma mi potresti fare un esempio perchè non riesco a capire come fare.
Ho provato in questo modo:
Nella form1 nell'evento di click del pulsante scrivo
new form2().ShowDialog(variabile1,variabile2,variabile3,.....);
Mentre nella form2 scrivo
public form2(variabile1,variabile2,variabile3,...)
{
InitializeComponent();
}

Dove sbaglio?
Grazie

quasi, pero' non devi passarle alla ShowDialog(), che è semplicemente un metodo, ma al costruttore del form2.

Quindi, a livello di codice, diventa cosi: new form2(variabile1,variabile2,variabile3,.....).ShowDialog();

il new serve appunto a richiamare il costruttore dell'oggetto, che è quello che hai scritto tu in modo corretto:

public form2(variabile1,variabile2,variabile3,...)
{
InitializeComponent();
}

FedericoT
13-08-2008, 18:07
quasi, pero' non devi passarle alla ShowDialog(), che è semplicemente un metodo, ma al costruttore del form2.

Quindi, a livello di codice, diventa cosi: new form2(variabile1,variabile2,variabile3,.....).ShowDialog();

il new serve appunto a richiamare il costruttore dell'oggetto, che è quello che hai scritto tu in modo corretto:

public form2(variabile1,variabile2,variabile3,...)
{
InitializeComponent();
}

Ok ho fatto come mi hai consigliato ed in effetti le variabili me le riconosce, ma solo all'interno del metodo costruttore della form2.
Ora come faccio a farmele riconoscere in tutta la form?
Devo dichiarare una nuova variabile nella classe della form2 ed estrarmi la variabile dal metodo costruttore?
Se si qual'è la sintassi?
Grazie

avastreg
13-08-2008, 18:23
dichiarale al di fuori del costruttore (ma sempre all'interno della classe).

public class someClass {

private int someVar1;
private List<string> someVar2;

public someClass ( int someVar1, List<string> someVar2) {
this.someVar1 = someVar1; //assegno la someVar1 (passata) alla proprietà someVar1 di questo oggetto
this.someVar2 = someVar2;
}

someVar1 e someVar2 dopo le puoi usare anche fuori dal costruttore.

muntagna76
20-08-2008, 10:44
Cia, non sò se sia la discussione giusta..cmq ci provo.
Sto realizzando un semplice programma in c# ho già creato il database e tutte le varie cose(tabelle relazioni ecc..)
Ho inserito le form, 1 principale nella quale metto i pulsanti per aprire le altre form(già disegnate)
clicco sul button (a cui ho già dato nome e label) il codice per aprire una form
è nel mio caso

Ordini.showdialog() domanda?

la form ordini è stata creata ed i nomi coincidono dove sbaglio? sò che è una domanda stupida ma sono fermi in ste xxxxx!!
grazie per la collaborazione

compilando mi dà l'errore:

Errore 2 Occorre un riferimento a un oggetto per la proprietà, il metodo o il campo non statico 'System.Windows.Forms.Form.ShowDialog(System.Windows.Forms.IWin32Window)' C:\Documents and Settings\Davide\Documenti\Visual Studio 2008\Projects\ordini clienti\ordini clienti\Principale.cs 26 13 ordini clienti

avastreg
20-08-2008, 10:56
Ordini.showdialog() domanda?


un po' criptico, provo a vedere se riesco ad aiutarti :)

non Ordini.showDialog();

poichè Ordini non è un form statico.

Cliccando sul bottone tu desideri creare quel form e aprirlo, perciò lo devi instanziare (all'interno dell'evento click del bottone).

Quindi, le alternative (due delle migliaia) sono:

new Ordini().showDialog();

oppure

Ordini tuavariabileordini = new Ordini();

tuavariabileordini.showDialog();

se ti serve gestisterlo è meglio l'ultima, se è una botta e via è meglio la prima.

muntagna76
20-08-2008, 11:05
Grazie ci provo e poi ti faccio sapere..