Torna indietro   Hardware Upgrade Forum > Software > Programmazione

DJI Mic Mini 2: audio 48 kHz / 24-bit e protocollo OsmoAudio sotto i 100 Euro
DJI Mic Mini 2: audio 48 kHz / 24-bit e protocollo OsmoAudio sotto i 100 Euro
DJI presenta Mic Mini 2, un sistema microfonico wireless ultra-compatto progettato per democratizzare l'audio di alta qualità nella fascia entry-level. Con un peso di soli 11 grammi per il trasmettitore elimina i fastidi tipici dei modelli più pesanti sui vestiti. Nonostante la miniaturizzazione Mic Mini 2 offre prestazioni tecniche di rilievo: registrazione omnidirezionale a 48 kHz/24-bit, tre preset vocali (Regular, Bright, Rich) e un sistema di cancellazione attiva del rumore a due livelli.
Recensione Moto G77: display AMOLED e buona autonomia per il midrange economico
Recensione Moto G77: display AMOLED e buona autonomia per il midrange economico
Motorola propone in fascia media il nuovo Moto G77 5G, uno smartphone che punta sul display AMOLED da 1.5K a 120Hz, e sulla fotocamera da 108 MP con stabilizzazione ottica per affrontare la fascia media. Il tutto insieme a una batteria da 5200mAh in soli 7,3 millimetri di spessore, con una scocca certificata con standard militari
DJI Lito 1 e Lito X1 recensione: i nuovi droni per principianti che non si fanno mancare nulla
DJI Lito 1 e Lito X1 recensione: i nuovi droni per principianti che non si fanno mancare nulla
DJI ha appena ufficializzato la serie Lito, la sua nuova gamma di droni entry-level destinata a chi si avvicina per la prima volta alla fotografia aerea. Al centro dell'annuncio ci sono due modelli ben distinti per fascia di prezzo e specifiche tecniche: DJI Lito 1 e DJI Lito X1. Entrambi si collocano sotto la soglia regolamentare dei 249 grammi, che permette di volare con requisiti burocratici più semplici rispetto ai droni più pesanti.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 11-10-2012, 22:51   #1
Darioct28
Member
 
Iscritto dal: Jun 2012
Messaggi: 88
[Problema c#]Passaggio istanza di Form1 a un Form2

Ciao ragazzi vi scrivo per avere delle info sul passaggio di un'oggetto da un form all'altro in c#..
praticamente sto creando un applicazione che fa delle determinate cose in un form, poi viene aperto un nuovo form che deve permettere di modificare l'oggetto in questione e ritornare l'oggetto modificato al form di partenza.

Per fare cio ho quindi creato due form, una volta avviato il primo (Form1) e fatto quello che si deve fare (viene creato l'oggetto, si inzializza, si fanno le operazioni ecc), clicco su un pulsante 'Modifica' che crea una nuova istanza di FormModifica:

private void btnModifica_Click(object sender, EventArgs e)
{
FormModifica fm = new FormModifica();
fm.ShowDialog();
}

E fino a qui ci siamo, il secondo form viene avviato...ma devo passare al nuovo form l'oggetto 'o' sul quale deve lavorare
Il problema è che non riesco a passare l'oggetto perchè dal FormModifica devo creare un'istanza del Form1 e creandola si viene a creare un nuovo Form che non contiene i dati che mi interessano..come posso passare l'istanza Form1 sulla quale ho lavorato, al form2?

Spero di essere stato chiaro se non avete capito qualcosa ditemelo ^^
Darioct28 è offline   Rispondi citando il messaggio o parte di esso
Old 12-10-2012, 00:23   #2
[Kendall]
Senior Member
 
L'Avatar di [Kendall]
 
Iscritto dal: Jul 2005
Città: Vicenza
Messaggi: 1570
Quote:
Originariamente inviato da Darioct28 Guarda i messaggi
Ciao ragazzi vi scrivo per avere delle info sul passaggio di un'oggetto da un form all'altro in c#..
praticamente sto creando un applicazione che fa delle determinate cose in un form, poi viene aperto un nuovo form che deve permettere di modificare l'oggetto in questione e ritornare l'oggetto modificato al form di partenza.

Per fare cio ho quindi creato due form, una volta avviato il primo (Form1) e fatto quello che si deve fare (viene creato l'oggetto, si inzializza, si fanno le operazioni ecc), clicco su un pulsante 'Modifica' che crea una nuova istanza di FormModifica:

private void btnModifica_Click(object sender, EventArgs e)
{
FormModifica fm = new FormModifica();
fm.ShowDialog();
}

E fino a qui ci siamo, il secondo form viene avviato...ma devo passare al nuovo form l'oggetto 'o' sul quale deve lavorare
Il problema è che non riesco a passare l'oggetto perchè dal FormModifica devo creare un'istanza del Form1 e creandola si viene a creare un nuovo Form che non contiene i dati che mi interessano..come posso passare l'istanza Form1 sulla quale ho lavorato, al form2?

Spero di essere stato chiaro se non avete capito qualcosa ditemelo ^^
Se non ho capito male dall'istanza di Form1 crei un'istanza di FormModifica, e a questa FormModifica vuoi passare l'oggetto genitore, cioè l'istanza di Form1 per appunto permettere modifiche su di essa.
In tal caso ti basta specificare un costruttore di FormModifica (o modificare quello che viene autogenerato) che accetti in ingresso un oggetto di tipo Form1. Fatto questo il codice da te scritto viene modificato semplicemente così:
Codice:
private void btnModifica_Click(object sender, EventArgs e)
{
   FormModifica fm = new FormModifica(this);
   fm.ShowDialog();
}
Era questo che intendevi?
[Kendall] è offline   Rispondi citando il messaggio o parte di esso
Old 12-10-2012, 08:27   #3
Darioct28
Member
 
Iscritto dal: Jun 2012
Messaggi: 88
Sisi ecco una cosa del genere, come avviene per gli oggetti standard che tramite costruttore si passano, volevo passare il form al nuovo form...quindi basta mettere la parola this è avrò l'istanza nel formload del FormModifica?
Poi dal FormModifica, per mettere l'istanza in un oggetto di classe Form1, in modo da poterci lavorare come faccio?
Ne FormModifica_Load come faccio a tirarmi l'istanza appena passata e metterla in un oggetto?
Darioct28 è offline   Rispondi citando il messaggio o parte di esso
Old 12-10-2012, 10:16   #4
[Kendall]
Senior Member
 
L'Avatar di [Kendall]
 
Iscritto dal: Jul 2005
Città: Vicenza
Messaggi: 1570
Quote:
Originariamente inviato da Darioct28 Guarda i messaggi
Sisi ecco una cosa del genere, come avviene per gli oggetti standard che tramite costruttore si passano, volevo passare il form al nuovo form...quindi basta mettere la parola this è avrò l'istanza nel formload del FormModifica?
Poi dal FormModifica, per mettere l'istanza in un oggetto di classe Form1, in modo da poterci lavorare come faccio?
Ne FormModifica_Load come faccio a tirarmi l'istanza appena passata e metterla in un oggetto?
Come ti dicevo devi modificare il costruttore di FormModifica (o creartene uno di nuovo) in modo che accetti un'istanza di Form1.

Ipotizziamo che tu, all'inizio del programma, ti crei un'istanza di Form1 chiamata mainWindow, che è per l'appunto la tua pagina principale. Dopodichè tramite pulsante invochi l'apertura di una nuova finestra di tipo FormModifica.

Così:
Codice:
private void btnModifica_Click(object sender, EventArgs e)
{
FormModifica fm = new FormModifica(this);
fm.ShowDialog();
}
Questo, come detto prima, impone che tu faccia due cose, prima di tutto che inserisca tra i campi della classe FormModifica una variabile di tipo Form1, chiamata per esempio _parent, e che poi tu inserisca un costruttore che accetti in ingresso una istanza di Form1:

Codice:
public FormModifica (Form1 parent)
{
   _parent = parent;   
}
In questa maniera _parent "punta" all'istanza mainWindow e tramite di essa puoi modificarla.

Spero di essermi spiegato bene
[Kendall] è offline   Rispondi citando il messaggio o parte di esso
Old 12-10-2012, 21:50   #5
Darioct28
Member
 
Iscritto dal: Jun 2012
Messaggi: 88
Non ci avevo completamente fatto caso che form.cs essendo una classe ha il suo costruttore e potevo passare parametri usando quello xD
Comunque alla fine invece di passare l'intero form ho passato solo l'oggetto che dovevo modificare, che ho poi ritornato al form principale tramite un metodo!

Adesso volevo chiederti un'altra cosa...so che siamo offtopic ma non vorrei aprire un'altra discussione solo per questa cosa...come si crittografa un file?
Ora come ora salvo il file come testo tramite StreamWriter, writeline(), ecc ma così ovviamente è facile modificare il file salvato anche con il semplice notepad...come posso scriverlo in modo da renderlo illeggibile al blocco note, ma solo all app?
Darioct28 è offline   Rispondi citando il messaggio o parte di esso
Old 13-10-2012, 00:18   #6
[Kendall]
Senior Member
 
L'Avatar di [Kendall]
 
Iscritto dal: Jul 2005
Città: Vicenza
Messaggi: 1570
Quote:
Originariamente inviato da Darioct28 Guarda i messaggi
Non ci avevo completamente fatto caso che form.cs essendo una classe ha il suo costruttore e potevo passare parametri usando quello xD
Comunque alla fine invece di passare l'intero form ho passato solo l'oggetto che dovevo modificare, che ho poi ritornato al form principale tramite un metodo!
In che senso "hai ritornato"? Se hai modificato lo stesso oggetto non vi è alcunchè da ritornare, perchè la modifica l'hai fatta sull'oggetto originario.

Quote:
Adesso volevo chiederti un'altra cosa...so che siamo offtopic ma non vorrei aprire un'altra discussione solo per questa cosa...come si crittografa un file?
Ora come ora salvo il file come testo tramite StreamWriter, writeline(), ecc ma così ovviamente è facile modificare il file salvato anche con il semplice notepad...come posso scriverlo in modo da renderlo illeggibile al blocco note, ma solo all app?
Difficile spiegare tutto in un forum, ti consiglio di leggere un po' di materiale didattico a riguardo, perchè tutto ciò che riguarda i tipi di stream e la loro gestione non è banale (non che sia ipercomplessa, ma ha bisogno di una certa trattazione secondo me e non due righe in croce su di un forum). Io, per la cronaca, mi son trovato molto bene con "C# in a nutshell"
[Kendall] è offline   Rispondi citando il messaggio o parte di esso
Old 13-10-2012, 10:08   #7
Darioct28
Member
 
Iscritto dal: Jun 2012
Messaggi: 88
Ok ti ringrazio per i consigli vedrò di informarmi

Per ritornare intendo che ho passato l'oggetto, l'ho assegnato a una variabile locale, e poi tramite un metodo l'ho ritornato

object o;

//costruttore
public FormModifica(object ogg)
{
Object o= ogg
}

..
//codice per la modifca//
..

//ritorna l'oggetto dopo averlo modificato
public object getOggettoMod()
{
return ogg;
}

quest'ultimo metodo lo chiamo nel form principale dopo aver chiuso il dialog formModifica in questo modo:

oggMod=fm.getOggettoMod();
Darioct28 è offline   Rispondi citando il messaggio o parte di esso
Old 04-11-2012, 17:09   #8
Darioct28
Member
 
Iscritto dal: Jun 2012
Messaggi: 88
Quote:
Originariamente inviato da [Kendall] Guarda i messaggi
In che senso "hai ritornato"? Se hai modificato lo stesso oggetto non vi è alcunchè da ritornare, perchè la modifica l'hai fatta sull'oggetto originario.
Alla fine ho fatto così. Meno righe di codice e meno procedimenti doppi inutili
Il programma è quasi completo adesso! Appena lo finisco vi posto il video demo ^^

Comunque un ultima cosa...Oltre al form modifica ho creato altri form, tutti aperti in showdialog...
Il funzionamento è lo stesso, una volta effettuate le operazioni, si clicca in un bottone che avvia il metodo corrispondente, fa le operazioni e poi torna un oggetto di tipo DialogResult.Ok
C'è un piccolo problema però, nel caso in cui l'utente inserisce dei dati non validi, l'errore viene segnalato tramite MessageBox, ma essendo che il bottone torna l'oggetto di tipo DialogResult quando lo premo, il form viene chiuso e quindi l'utente deve ripetere la procedura (reinserendo i dati ecc) il che è un pò antipatico....
C'è un modo per evitare che il bottone torni il DialogResult una volta finito il metodo, e farlo solo se effettivamente la procedura è andata a buon fine?
Darioct28 è offline   Rispondi citando il messaggio o parte di esso
Old 04-11-2012, 18:43   #9
simo8
Member
 
Iscritto dal: Jul 2009
Messaggi: 146
Si , basta non mettere il DialogResult.Ok quando preme il pulsante ok . Quando preme il pulsante OK tu chiami una procedura che controlla se gli input sono accettabili , se il controllo va a buon fine allora fai il set DialogResult.Ok , altrimenti esci dalla sub senza fare niente.

Codice:
Private Sub OKButton_Click(ByVal sender As Object, ByVal e As RoutedEventArgs) Handles OKButton.Click

 //funzione che fa il controllo sull'input 
 controllo()

End Sub

private sub controllo()

//controlli su input ...

//esito true se input accettabile altrimenti else

 if esito = true then
  DialogResult.Ok
 else 
  //segnalare errore su input
 messagebox.show("ERRORE")
 end if

end sub

Ultima modifica di simo8 : 04-11-2012 alle 18:48.
simo8 è offline   Rispondi citando il messaggio o parte di esso
Old 05-11-2012, 12:23   #10
Darioct28
Member
 
Iscritto dal: Jun 2012
Messaggi: 88
Perfetto adesso funziona ^^ Ci siamo quasi...un ultima cosa esiste qualche metodo per ridimensionare file immagine?

Vi spiego, praticamente quando viene selezionata un immagine, essa viene copiata in una cartella nella stessa directory dell eseguibile, ma ovviamente la dimensione resta quella originale...dato che non mi importa della qualità, perchè poi dentro il form l'immagine viene visualizzata ridimensionata proporzionalmente alla dimensione di un picture box, esiste un modo per ridimensionare il file copiato, in modo da risparmiare spazio sul disco?
Darioct28 è offline   Rispondi citando il messaggio o parte di esso
Old 06-11-2012, 16:45   #11
Darioct28
Member
 
Iscritto dal: Jun 2012
Messaggi: 88
Come promesso eccovi il video del programma

Per il fatto dell'immagine se sapete aiutarmi bene se no più in la si vedrà alla fine non è una cosa fondamentale

http://www.youtube.com/watch?feature...&v=NSCtAcW_2pQ

Nel canale trovate anche altri video di altri programmi!

Ultima modifica di Darioct28 : 06-11-2012 alle 16:47.
Darioct28 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


DJI Mic Mini 2: audio 48 kHz / 24-bit e protocollo OsmoAudio sotto i 100 Euro DJI Mic Mini 2: audio 48 kHz / 24-bit e protocol...
Recensione Moto G77: display AMOLED e buona autonomia per il midrange economico Recensione Moto G77: display AMOLED e buona auto...
DJI Lito 1 e Lito X1 recensione: i nuovi droni per principianti che non si fanno mancare nulla DJI Lito 1 e Lito X1 recensione: i nuovi droni p...
Sony World Photography Awards 2026: i premiati, anche italiani, il punto sulla fotografia di oggi Sony World Photography Awards 2026: i premiati, ...
Una settimana con Hyundai Ioniq 5 N-Line: diverte e convince Una settimana con Hyundai Ioniq 5 N-Line: divert...
La propulsione ottica con metajet potreb...
La missione Artemis III potrebbe essere ...
Mad Catz M.M.O. 7+: il mouse MMO da cult...
SAS porta il calcolo quantistico nelle a...
Un miliardo di dollari da SAS per portar...
SAS si apre all'IA di terzi: Viya integr...
Quantinuum si appresta a debuttare in Bo...
Censis: il 60% degli italiani evita i me...
Cloud sovrano: Microsoft potenzia Azure ...
Spionaggio industriale: l'edge è ...
Cosa cambia davvero su un'auto elettrica...
Agenti AI più costosi dei dipende...
GeForce RTX 5070 Laptop da 12 GB al debu...
Le aziende e i prodotti candidati all'EH...
Il materiale che cambia tutto: funziona ...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 22:30.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v