Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Riporto qui alcune domande postate troppo spesso, con relativa risposta:
Come si salvano gli elementi di una listbox su file txt? Ovviamente, scrivendo sul file di testo i suoi elementi. Per scorrere gli elementi si usa una enumerazione (ciclo for); per scriverli si usa la classe StreamWriter.
Come si fa ad impostare un programma predefinito per una certa estensione? Per associare un programma predefinito a un'estensione particolae di file bisogna modificare il registro di sistema. Il luogo dove vengono depositate tutte le informazioni sulle estensioni è la chiave globale HKEY_CLASSES_ROOT. In essa sono presenti moltissime sottochiavi con il nome dell'estensione.
Quindi, per prima cosa si deve creare in questa chiave globale una sottochiave col nome dell'estensione (es.: ".new"). All'intero di quest'ultima, si deve modificare il valore (Predefinito) con un nome sintetico che descriva l'applicazione usata e il tipo di file (es.: "MyProgramNew").
Dopodiché, sempre all'interno di HKEY_CLASSES_ROOT, si crea un'altra sottochiave di primo livello, usando lo stesso nome inserito come valore predefinito in precedenza (es.: "MyProgramNew"). All'interno di questa chiave, il valore (Predefinito) può essere modificato a piacere a indica la descrizione che apparirà nell'explorer (es.: "File NEW"). Per creare un collegamento con l'applicazione predefinita, si devono creare le sottochiavi shell\open\command: all'interno dell'ultima (command), il valore (Predefinito) deve essere il percorso dell'applicazione predefinita per l'apertura, seguita da "%1" o "%l" (es.: "C:\Programmi\MyProgram\MyProgram.exe" "%1").
Per quanto riguarda il codice:
Codice sorgente - presumibilmente VB.NET
Imports Microsoft.Win32
'...
PrivateSub RegisterProgram()
Dim RegKey As RegistryKey = Registry.ClassesRoot.OpenSubKey(".New")
Dim WParam As RegistryKeyPermissionCheck = RegistryKeyPermissionCheck.ReadWriteSubTree
Ovviamente se non dite al programma cosa fare, lui se ne fa un baffo del percorso che riceve in input. Bisogna controllare i parametri da linea di comando:
Codice sorgente - presumibilmente Delphi
If My.Application.CommandLineArgs.Count > 0 Then
'Ci sono parametri: il primo è il percorso del file da aprire
Dim Path as string = My.Application.CommandLineArgs(0)
Come si aggiunge del testo a una stringa/TextBox/RichTextBox/Label? Non capisco perchè sia così difficile da comprendere. L'operatore = IMPOSTA il testo: ciò significa che se scrivete:
Codice sorgente - presumibilmente Plain Text
Label1.Text = "ciao"
quello che ottenente è un CAMBIAMENTO di valore del testo (questo vale anche per variabili stringa), e NON un'AGGIUNTA. Se volete effettivamente aggiungere qualcosa alla fine di una stringa, dovete usare l'operatore += o &=, ad esempio:
Codice sorgente - presumibilmente VB.NET
Dim A AsString="Ciao"
Dim B AsString=" Totem"
A += B '> "Ciao Totem"
Come si passano variabili da un form a un altro? Le variabili, ed in generale i membri, di un form sono esclusivi e unici per quel form, perciò NON si possono richiamare da alcun altro form. Il compilatore non è onniscente e non esiste alcun tipo di magia che faccia valere i membri di un form anche per un altro. Essi vanno esplicitamente posti in un luogo accessibile a tutti i form, ossia un modulo (o classe statica). Il modulo è solitamente dichiarato in un file separato e contiene solo quei membri che è necessario condividere tra tutte le parti dell'applicazione.
In VB.NET:
Codice sorgente - presumibilmente VB.NET
Module Globals
PublicConst C As Int32 = 300
PublicSub DoSomething()
EndSub
End Module
In C#
Codice sorgente - presumibilmente C++
staticclass Globals
{
publicconstint C =300;
publicvoid DoSomething()
{
}
}
In VB.NET esiste il namespace My, che gode della proprietà Forms, nella quale sono contenuti i riferimenti alle istanze di default dei form. My.Forms.Form1 indica il primo form (se si chiama Form1) e gli altri sono denominati di conseguenza. E' possibile accedere a un qualsiasi form da My.Forms a patto che tale form NON sia stato creato da codice dal programmatore, poiché in quel caso sarebbe un'altra istanza della classe in questione e non quella di default.
Ultima modifica effettuata da Il Totem il 31/12/2009 alle 10:21
Come si associano più controlli a un indice / esistono le matrici di controlli? In .NET non esistono le matrici di controlli, almeno non come i programmatori VB6 sono abituati a conoscerle. Dato che ogni controllo è un oggetto, è possibile dichiarare array di controlli così come si dichiarano array di qualsiasi altro tipo:
Codice sorgente - presumibilmente VB.NET
'Dichiara un array di Button
Dim Buttons(9)As Button
'Inizializza ogni controllo
For I AsByte= 0 To 9
Buttons(I)=New Button()
Buttons(I).Location=New Point(10, I * 25)
Buttons(I).Size=New Size(70, 20)
Next
Per aggiungere i controlli creati a un form o a un qualsiasi controllo contenitore (GroupBox, Panel, PictureBox, eccetera...) basta aggiungerli alla proprietà Controls:
Codice sorgente - presumibilmente VB.NET
Dim B AsNew Button()With{.Location=New Point(10, 10), .Size=New Size(70, 20)}
Me.Controls.Add(B)
E' possibile fare la stessa cosa con più controlli. Una volta aggiunti alla collezione, ogni controllo viene visualizzato nella GUI, ed è accessibile tramite un indice o una chiave all'interno della suddetta collezione.
Come si leggono solo certe righe di un file di testo? Ci sono almeno tre modi per farlo.
1 - Si legge tutto il file di testo e si usa la funzione String.Split per spezzarlo in tante sottostringhe divise da un certo carattere, che in questo caso sarà l'a capo:
Dim Lines()AsString=File.Split(Environment.NewLine)
Lines è un array che contiene tutte le sottostringhe del contenuto del file separate dal carattere a capo, ossia contiene in ogni cella una singola riga di testo. Per accedere a quelle volute, si usa un indice:
Codice sorgente - presumibilmente VB.NET
Dim Line1 AsString= Lines(0)'prima riga
Dim Line5 AsString= Lines(4)'quinta riga
E' possibile leggere e modificare il contenuto dell'array. Se vi vuole salvare ancora tutto sul file di testo, basta scrivere tutte le linee:
Codice sorgente - presumibilmente VB.NET
Dim W AsNew IO.StreamWriter("percorso")
ForEachLineAsString In Lines
W.WriteLine(Line)
Next
W.Close()
2 - Alternativa più corta al metodo precedente. Per leggere tutte le linee si usa:
Codice sorgente - presumibilmente C# / VB.NET
Dim Lines() As String = IO.File.ReadAllLines("percorso")
Per scrivere tutto direttamente sul file, invece:
Codice sorgente - presumibilmente Plain Text
IO.File.WriteAllLines(Lines)
3 - Si utilizza un buffer di caratteri per immagazzinare tutti i caratteri del file fino all'a capo in una variabile. Dopodiché essa viene aggiunta a una lista. Si continua a bufferizzare fino alla fine del file.
Ultima modifica effettuata da Il Totem il 22/08/2010 alle 10:33