|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Aug 2004
Messaggi: 1371
|
[VB.NET]Aiuto com mio programmino.....
Come detto nell'altro thread.... ricomincio a fare la Gui del mio programmino.
Per non ripetere lo stesso errore appunto ho deciso di prima completare tutta la GUI... e poi cominciare ad editare il codice ![]() Siccome ho intenzione di fare l'interfaccia utente...... vorrei sapere come (per ora) : - E' possibile attivare o meno la grafica di un form.vb magari con una pressione di un tasto. In pratica io ho una prima pagina... e un tasto tipo Avanti deve aprire un'altro form per l'inserimento di alcuni dati.... subito dopo con la pressione di un'altro tasto (Tipo Next) chiudere lo stesso form (ma mantenere ovviamente i dati inseriti) e visualizzarne un'altro per poter inserire altri dati e in questo nuovo Form magari con un tasto Indietro ritornare ai dati reinseriti in precedenza..... |
![]() |
![]() |
![]() |
#2 | |
Senior Member
Iscritto dal: Sep 2004
Messaggi: 3967
|
Quote:
![]() Se posso permettermi di darti un consiglio, la GUI dovrebbe essere l'ultima cosa da progettare. Fossi in te, creerei due progetti all'interno della stessa soluzione: Uno di tipo class library dove avere tutto ciò che riguarda i dati e la loro manipolazione L'altro, appunto la UI, che si limiterà quindi ad essere un semplice contenitore per la visualizzazione dei dati.
__________________
Dai wafer di silicio nasce: LoHacker... il primo biscotto Geek ![]() |
|
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: Aug 2004
Messaggi: 1371
|
Ok.. questa soluzione potrebbe andare però mi sembra per un livello avanzato di conoscenza del VB.Net.
Per ora per ottenere quello che ho spiegato sopra me la sono cavata giocando molto sui FormX.Visible = True o False dove appunto X sta per il Form e con i vari pulsanti disabilito o riabilito le varie opzioni. Cosi facendo praticamente ho anche appurato che se per esempio io setto dei valori nei TextBox in un form particolare al momento di tornare in quel box il testo non scompare e questo è molto importante visto che poi alla fine devo appunto utilizzare i valori delle TextBox per tirare fuori un valore finale!! Per farti capire un pò quello che alla fine devo fare: Form1.TextBox1.Value = "Tizio" Form1.TextBox2.Value = "Caio" Da un form diverso poi richiamo i due Value e con un bottono devo tirare fuori semplicemente una cosa del genere su un'ulteriori textbox quindi: Form2.TextBox1.Value = Form1.TextBox1.Value + " " + Form1.TextBox2.Value e quindi ottenere l'output a schermo.............. anzi... queste variabili TextBox siccome che devono essere strighe.... dov'è che posso dichiararle ?? Posso dichiarare per esempio tutte le variabili come stringe al momento di caricare il programma stesso quindi il Form1.vb ?? |
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Dec 2004
Messaggi: 3210
|
Se è un semplice "trenino di Form" non sprecherei proprio una Soluzione multi-progetto. La cosa più semplice è avere una serie di variabili Public in un modulo che tengono memoria dei dati inseriti o modificati di volta in volta, nonostante il passaggio tra una Form e l'altra...
![]() |
![]() |
![]() |
![]() |
#5 | |
Senior Member
Iscritto dal: Aug 2004
Messaggi: 1371
|
Quote:
![]() Allora ora altre 2 battaglie da fare: Praticamente ho un form che contiene una TextBox in ReadOnly che la uso come una sorta di Log. Io vorrei fare in modo appunto che ogni volta che vado a modificare questo log il contenuto dello stesso non venga cancellato ma bensi aggiunto in sotto forma di elenco puntato.. dovrebbe uscire una cosa tipo: - Nota 1 - Nota 2 - Note 3 ecc. ecc. E possibilmente che il log sia poi scorribile con le banda laterale..... è possibile ? *EDIT* Allora.. invece del TextBox ho messo il RichTextBox per la finestra di log.... ed ogni volta che devo scrivere qualcosa in pratica gli faccio sommare la vecchia stringa a quella nuova con qualcosa del genere: Richtextbox.Value = Richtextbox.value + "nuova parola" Funziona alla grande.... ora pero dovrei trovare un carattere... che ne so come si chiama.. o cmq un sistema per far andare a capo al momento di inserire la nuova stringa. Esiste un carattere jolly ?? Qualcosa che simuli la pressine del tasto invio ?? Ultima modifica di DjDiabolik : 25-09-2009 alle 19:16. |
|
![]() |
![]() |
![]() |
#6 |
Senior Member
Iscritto dal: Dec 2004
Messaggi: 3210
|
Certo, il metodo più immediato è il carattere dato dalla costante Microsoft.VisualBasic.vbCrLf, per gli amici vbCrLf :
Codice:
MsgBox("- A" & vbCrLf & "- B") ![]() |
![]() |
![]() |
![]() |
#7 | |
Senior Member
Iscritto dal: Aug 2004
Messaggi: 1371
|
Quote:
RichTextBox.AppendText... e alla fine per farlo andare al prossimo append ho messo un Environment.Newline. Per ora può andare anche cosi. Ma Lol.. ogni volta che ho qualcosa per trozzi e bocconi e magari anche nel modo meno congeniale becco una soluzione...... Stavolta però mi sa che quello che mi hai suggerito tu può tornarmi utile..... perchè ora dovrei creare un form. Da questo form alla fine devono uscire diverse stringhe e ognuna di essa deve essere una variabile. In pratica io ho 3 TextBox con 3 valori da inserire....... alla fine del tutto devo avere un pulsante che mi conbina queste 3 textbox in un'unica stringa ottenendo una cosa del genere: TextBox1:TextBox2:TextBox3 (in pratica la stringa finale deve solo aggiungere i ":" tra le 3 strighe. La difficolta è che di queste 3 stringhe devo avere la possibilità di di crearne diverse con lo stesso form....... diciamo che dopo aver creato una o due stringa con un'ulteriore pulsante devo salvare tutto queste stringhe in un'unica stringa ed ottenere qualcosa del tipo: xx:yy:zz xx(2):yy(2):zz(2) ecc. ecc. E' chiaro un pò ?? Quello che dovrei fare ? |
|
![]() |
![]() |
![]() |
#8 | |
Senior Member
Iscritto dal: Dec 2004
Messaggi: 3210
|
Quote:
![]() A dire il vero non ci ho capito una mazza... ![]() Le textbox sono 3, vuoi concatenare il testo interponendo ":" e mettere la stringa risultante in una variabile. Facile. Oppure le textbox sono un multiplo di 3 e questa cosa la devi fare a 3 a 3... Se è così fai un array di stringhe. Alla fine scorri l'array e concateni tutto in un'unica stringa... ![]() |
|
![]() |
![]() |
![]() |
#9 |
Senior Member
Iscritto dal: Aug 2004
Messaggi: 1371
|
![]() Allora facciamo cosi... stavolta ti posto la form che ho creato io: - Manca però la finestra di Log sotto perchè appunto non so cosa usare. - E mancano le label dei pulsanti......... che ho tolto....... cmq ora ti spiego. In pratica.... quello da fare qua è riempire il primo TextBox e il Secondo. Il Checkbox che vedi sotto praticamente disattiva il panel del NumericUpDown inoltre attiva una variabile a valore 1 se è attivo o 0 se è disattivo. A questo punto sarebbe da premere il Tasto Aggiungi......... e dovrei ottenere questo nei diversi casi ma cmq verifico prima il valore della variabile settata dalla checkbox: - Se la Variabile vale 1 io devo ottenere una variabile che combina le 2 TextBox e il NumericUpDown ottenendo appunto la stringa xx:yy:zz - Se invece la variabile vale 0 devo prendere solamente i valori delle textbox ed escludere il valore della NumericUpDown quindi ottenere solo xx:yy quindi una volta fatto questo ognuna di queste stringhe deve essere una variabile questo perchè devo far unire queste stringhe ad altre stringhe che ho creato nel resto del programma........ |
![]() |
![]() |
![]() |
#10 |
Senior Member
Iscritto dal: Dec 2004
Messaggi: 3210
|
Beh, è semplicissimo, basta che in un modulo crei 3 variabili, nominate opportunamente ( sul tipo : frm1Txt1, frm1Txt2, frm1Num ) più una, che contiene i valori concatenati. Le variabili Public in un modulo vengono viste da ogni punto del programma e anche se chiudi la Form trattengono l'ultimo valore settato per tutta la durata del runtime... Dov'è il difficile ?
![]() |
![]() |
![]() |
![]() |
#11 |
Senior Member
Iscritto dal: Aug 2004
Messaggi: 1371
|
Lol... non è cosi semplice come vedi... allora guarda io l'ho risolta cosi ed ho tirato fuori questo:
![]() Ti lascio anche le Label dei pulsanti..........tanto... che gli fa ?? ![]() Allora vediamo...... io ho compilato tutto i campi...ora vediamo... io compilo il primo e il secondo textbox e spunto o no la il checkbox sotto: A questo punto ottengo un messaggio nella richtextbox a destra che ho configurato tutto e mi da i vari campi inseriti sopra ... e nella finestra a sinistra faccio stampare la stringa completa dei due punti. Questo in entrambi i casi.. ovviamente se la checkbox è spuntata la stringa avra 3 valori sempre divisi dai due punti.. mentre se la checkbox non è spuntata io ho quella stringa di 2 valori. Ha questo punto ho pensato... come faccio io se magari faccio un'inserimento errato ?? Le mie poche conoscenze mi ha portato a settare quel richbox.textbox a destra in non ReadOnly.... in modo che se io faccio un'inserimento sbagliato seleziono il testo e lo cancello via tastiera. So che come soluzione è un pò alla vamos e fa anche schifo a dire la verita... ma non so alternative... la figata sarebbe quella di fare una lista di queste stringhe e poterne selezionare una e cancellarla direttamente...... A questo punto il pulsante aggiungi tutto, in pratica sto pulsante non dovrebbe "far altro" che prendere quindi queste stringe intere in quel richtexbox di destra e fare tutte variabili per poterle utilizzare in seguito. Come faccio ?? Calcola che ora io per poter aggiungere le stringhe in quel richtextbox ho ancora utilizzato il Richtextbox.textappend unito al Environment.Newline alla fine per far andare a capo tutto.... Ultima modifica di DjDiabolik : 26-09-2009 alle 00:04. |
![]() |
![]() |
![]() |
#12 | ||
Senior Member
Iscritto dal: Dec 2004
Messaggi: 3210
|
Quote:
![]() Allora, dato che sei un po' in "start-up" accetta qualche consiglio, o almeno prova, poi decidi : 1. Gli inserimenti utente, di qualsiasi genere siano, si controllano a monte, mai a valle ! Ossia, fai in modo di controllare PRIMA, evitando di gestire l'errore POI. 2. L'idea della RichTextBox in questo caso non sta in piedi. La lista delle stringhe ce l'hai ad un palmo dal naso : butta la textbox e usa una ListBox ! Quote:
In un modulo definisci una List di stringhe specifica per questa Form, esempio : Codice:
Public stringheForm1 As New List(Of String) Codice:
stringheForm1.Clear() For i As Integer = 0 To ListBox1.Items.Count - 1 stringheForm1.Add(ListBox1.Items(i)) Next ![]() |
||
![]() |
![]() |
![]() |
#13 | |
Senior Member
Iscritto dal: Aug 2004
Messaggi: 1371
|
Quote:
A questo punto posso lasciare tutto il testo per darmi il Log nella RTB a sinistra... però poi devo cambiare il tutto e far uscire l'output non sull'RTB ma nella ListBox.... e come si fa ? ![]() Perchè l'hai capito ora che ero "Start-Up" ?? |
|
![]() |
![]() |
![]() |
#14 | |
Senior Member
Iscritto dal: Dec 2004
Messaggi: 3210
|
Quote:
Codice:
ListBox1.Items.Add(nuovaStringa) |
|
![]() |
![]() |
![]() |
#15 | |
Senior Member
Iscritto dal: Aug 2004
Messaggi: 1371
|
Quote:
![]() Cmq sia questa listbox mi permette anche di modificare eventuali inserimenti errati ? |
|
![]() |
![]() |
![]() |
#16 |
Senior Member
Iscritto dal: Aug 2004
Messaggi: 1371
|
![]() Ma Guardalo!! Guardalo quant'è carino ora!! ![]() ![]() Codice:
Dim Stringa As String Stringa = TextBox2.Text + ":" + TextBox2.Text ListBox1.Items.Add(Stringa) ![]() e: Codice:
If ListBox1.SelectedIndex >= 0 Then ListBox1.Items.RemoveAt(ListBox1.SelectedIndex) End If Ora non resta che trovare come riunire le varie stringhe su + variabili......... Ah.. sai per caso come far andare l'autofocus nella ListBox ?? Io ho messo ListBox1.Autofocus() ma non sembra andare..... *EDIT* Inoltre... mica ho capito ora cosa mettere per far leggere i vari inserimenti ? Immagina che io alla fine vorrei ottenere le varie stringhe come Card1... Card2.. Card3 a seconda di quandi inserimenti fatti... *EDIT 2* Allora... ti vengo incontro... nel codice dello stesso form... in alto ho messo quel public. Nel codice della pressione del tasto "Aggiungi tutto" poi ho copiato il codice postato da te..... Fin qui ci siamo... ok ma poi che varibili mi ritrovo alla fine ?? Quali sono le variabili ?? Vediamo se ci azzecco.... le variabili si chiameranno StringheForm1(1), (2), (3) e via dicendo ? Ultima modifica di DjDiabolik : 27-09-2009 alle 00:25. |
![]() |
![]() |
![]() |
#17 | |
Senior Member
Iscritto dal: Dec 2004
Messaggi: 3210
|
Quote:
Codice:
Public stringheForm1 As New List(Of String) Sì, esatto, basterà ciclare la List() stringheForm1 e avrai tutte le stringhe raccolte in quella Form, nello stesso ordine in cui compaiono nella ListBox, ma solo se avrai prima popolato stringheForm1 correttamente, ossia, come già scritto : Codice:
stringheForm1.Clear() For i As Integer = 0 To ListBox1.Items.Count - 1 stringheForm1.Add(ListBox1.Items(i)) Next |
|
![]() |
![]() |
![]() |
#18 | |
Senior Member
Iscritto dal: Aug 2004
Messaggi: 1371
|
Quote:
In un'altro forum ho detto che avevo usato google per trovare alcune informazioni e funzioni e mi hanno trucidato. Premesso che devo vedere qual'è la differenza tra la form e un modulo... nel frattempo avevo fatto un pò di casini.. devo ripristinare il programma e far si... poi vediamo che riesco a trovare. |
|
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 18:18.