Tjena! Det du skulle kunna göra är att använda Dictionary, SortedList, HashTable som bas för din "collectionclass", då dessa kan hämta objekten med antingen ett numeriskt index eller en nyckelsträng. Filnamnet skulle då kunna fungera som nyckel om du inte tillåter att samma fil öppnas flera gånger. Jaha. Jag lånar den här tråden lite då jag står lite inför samma problem. Hej!Flera filer öppna samtidigt
Nu är det så att jag har problem igen. Jag ska försöka att bygga en liten texteditor och här är problemet jag står inför nu:
Jag vill kunna öppna flera filer samtidigt. Jag lagrar varje fil i ett File-objekt vars klass ärver från System.Collections.CollectionBase. När man öppnar en fil läggs filtext och filnamn m.m. in som en struct i File-objektet. Det är nu det knepiga kommer. När jag lägger till en fil läggs även structen in i en listbox. Varje gång jag jag byter fil i listboxen visas filtexten i en TextBox. När jag ska hämta ut text m.m. från File-objektet gör jag det med hjälp av en indexsiffra som jag får från lstFiles.SelectedIndex. Om man nu vill kunna sortera listboxen efter filnamn så stämmer ju inte alltid indexsiffrorna överens. Hur ska jag lösa detta? Finns det något annat sätt att hämta ut ett File-objekt på än med en indexsiffra? Såhär ser min funktion ut för att hämta ut ett objekt:
Public Sub Add(ByVal newFile As File)
Me.List.Add(newFile)
End Sub
Om ni inte förstår vad jag menar så fråga gärna! Vill mycket gärna få en liten hint om hur jag ska lösa detta...
Tack på förhand!Sv: Flera filer öppna samtidigt
Ett annat sätt är att använda Tag-propertyn på dina listitems för att lagra en referens till sitt File-objekt. Då kommer du lätt åt den valda radens File-objekt med :
CType(MyListBox.SelectedItem.Tag, MyClass).FileName
En sista variant som jag aldrig testat själv som sägs fungera på ListBox:en (ej ListView) är att lägga till objektet själv till listan. Se till att du har en property som heter ToString (antingen skapa en eller override:a en befintlig) så kommer den propertyn att användas som text på din listitem. Alltså nånting i stil med :
MyListBox.AddItem(MyFile) ' MyFile måste ha en ToString() property
Finns säkert andra sätt att lösa det på, men det var några ideér iallafall...
/Per HultqvistSv: Flera filer öppna samtidigt
Min plan är att min textredigerare skall vara "Tabstyrd" dvs de olika filerna ligger i varsin tab i en tabcontrol.
Tabarna skall i sig ha ett visst utseende de skall ju ha hela dessyta täckt av en richtextbox (eller texbox - vilket är att föredra?).
Just nu har jag Ett formulär. En clsFilhantering samt en clsTxtFormatering
EDIT: just det..
alltså en sak jag inte vet hur jag får till är just det här med att när man lägger till en ny tab i tabcontrollen - så vill jag ju att det skall skapas den här textboxen inne i den så att säga. Hur löser man den biten?
Jag behöver lite hjälp hur man skall börja tänka?Sv:Flera filer öppna samtidigt
Om jag förstår dig rätt vill du göra något i stil med:
myTabControl.TabPages.Add(.....)
int newTab = myTabControl.TabPages.Count;
RichTextBox r = new RichTextBox();
r.Dock = DockStyle.Fill;
myTabControl.TabPages[newTab].Controls.Add(r)
Koden ovan kan ha vissa fel då jag skriver ur minnet men tanken borde fylla dina önskemål?