Arrayverwendung in C#

Darkas

Erfahrenes Mitglied
Mein Problem:

Ich will ein Zuletzt verwendete Projekte Menü machen, und habe mir gedacht, ich Speichere die Dokumente in einer Datei, und wenn das Fenster geladen wird öffne ich die Datei und lese den Inhalt mit

Code:
if(File.Exists("adresses.dgc"))
     string[] Adresses = File.ReadAllLines("adresses.dgc");

ein.

Dabei kommt ein Fehler: Eine eingebettete Anweisung kann keine Deklaration und keine Anweisung mit Bezeichnung sein.

Wo ist da genau das Problem? Oder: wie kann ich das sonst machen?

Dann erzeuge ich ein zweites Array in dem ich ToolStripMenuItems initialisiere die dann angezeigt werden.

Dabei will ich für jedes Objekt die gleiche Click Funktion aufrufen.

Allerdings weiss ich nicht, wie ich mit der gleichen Funktion unterschiedliche Elemente verwenden kann, da ich der Funktion keine Parameter übergeben kann.

Könntet ihr mir vielleicht dabei Weiterhelfen

mfg Darkas
 
Ok, das mit der Funktion hat sich erledigt(sender).

Aber das mit der Funktion passt immer noch nicht
 
du kennst ja sicher ein menü wie
Datei->Zuletzt Verwendete Dokumente->...

sowas will ich machen

das ganze wird in einer Datei (adresses.dgc) gespeichert und wenn ich die auslesen will kommt ein Fehler
 
Ok, gehen wir davon aus, du hast ein MenuStrip und dieses hat ein Menu mnuFile. Und du hast deine Datei in welcher die einzelnen Daten stehen (hier ein Beispiel von mir, da ich nicht weiß, was bei dir genau drinnen steht):

Code:
C:\test\test1.xml
C:\test\test2.xml
Die Datei nennt sich in meinem Fall RecentFiles.txt.

Im Load-Handler meines Formulares rufe ich folgende Methode auf:

C#:
private void CreateRecentFiles()
{
    string[] files = File.ReadAllLines("RecentFiles.txt");
    if (files != null && files.Length > 0)
    {
        foreach (string s in files)
        {
            ToolStripMenuItem tsmi = new ToolStripMenuItem(s);
            tsmi.Click += new EventHandler(tsmi_Click);
            tsmi.Tag = s;
            mnuFile.DropDownItems.Insert(2, tsmi);
        }
    }
}
Darin passiert nichts anderes, als dass die einzelnen Zeilen der Datei ausgelesen werden. Dann wird ein Menüeintrag generiert und an der dafür vorgesehenen Stelle eingefügt (muss bei dir entsprechend angepasst werden). Zusätzlich wird jeweils der EventHandler für das Click-Ereignis gesetzt (betrifft immer den gleichen Handler). In die Tag-Eigenschaft wird noch der Pfad geschrieben, um später einfach abgefragt zu werden.

Wird nun einer der Menüeinträge angeklickt:
C#:
void tsmi_Click(object sender, EventArgs e)
{
    MessageBox.Show(((ToolStripMenuItem)sender).Tag.ToString());
}

Und fertig ist die "Zuletzt verwendete Dokumente-Funktion".
 
so, und jetzt zum öffnen:

Wie kann ich das Array mit dem Dateinamen der geöffneten Datei abgleichen

Code:
for(int i = 0; i<=files.lenght; i++)
{
     if(files[i] == filename)

ja, was dann?

Wie kann ich das Objekt aus dem Array löschen?
Außerdem sollen die anderen Objekte ja "nachrutschen".

Und anschließend will ich noch das gerade geöffnete Projekt oben anhängen ohne dass ich dafür den index -1 verwenden muss (geht das in C# überhaupt?)
 
naja, ganz so einfach ist es nicht. Es geht hier ja um das Array, das Probleme macht.

Um das ganze mal allgemeiner zu Definieren:

1. Wie kann ich ein Objekt aus dem Array löschen und die anderer Objekte in der gleichen Rheienfolge "nachrutschen" lassen?

2. Wie kann ich als 0ten Arrayindex etwas eintragen, so dass die anderen Einträge um einen Index nach oben verschoben werden?
 
Zurück