Wyświetlenie treści pliku TXT w ListBox

0

Witam,

Przerabiam program z C++ na C#, a w zasadzie to piszę program w C# na podstawie tego napisanego w C++.

Napotkałem na 2 problemy i nie wiem jak z nich wybrnąć:

  1. Po kliknięciu buttona ma otworzyć się openDialog i po wybraniu pliku (plik txt) zawartość ma zostać przepisana do listboxa (w listboxie znajduje się lista)
    w C++ miałem to tak:
 
void __fastcall TForm1::BitBtn5Click(TObject *Sender)
{
   if(OpenDialog1->Execute())
	{
		ListBox1->Items->LoadFromFile(OpenDialog1->FileName);

	}
}

W C# próbowałem tak ale nie wychodzi zbytnio to:

{
         using (OpenFileDialog open = new OpenFileDialog())
             {
                 if (open.ShowDialog() == DialogResult.OK)
                 {
                 try
                 {
                 open.ShowDialog();
                 StreamReader Import = new StreamReader(Convert.ToString(open.FileName));
                 while (Import.Peek() >= 0)
                 listBox1.Items.Add(Convert.ToString(Import.ReadLine()));
                 }
                 catch (Exception ex)
                 {
                 MessageBox.Show(Convert.ToString(ex.Message));
                 return;
                 }
                 }
             }

        }
 

2)Za pomocą OpenDialoga wybieram plik i jego nazwa dodawana jest do listbox

W C++ miałem tak:

 
void __fastcall TForm1::BitBtn4Click(TObject *Sender)
{
	if(OpenDialog2->Execute())
	{
		 ListBox1->Items->Add(ExtractFileName(OpenDialog2->FileName));
	}
}

W C# nie mam pojęcia jak to ogarnąć

1

Pierwsze - za bardzo przekombinowane. Tak prościej:

listBox1.Items.AddRange(File.ReadAllLines(open.FileName));

Co do drugiego: http://msdn.microsoft.com/en-us/library/system.windows.forms.openfiledialog.safefilename.aspx

listBox1.Items.Add(open.SafeFileName);

Przy okazji: zlituj się i nazywaj zmienne sensownie. Form1, listBox1, button1... to jest koszmar.

P.S. Te wszystkie Convert.ToString są po prostu bez sensu. Powiedz mi po co zmieniać string na string?
P.S. 2 Łapanie wyjątków na pokemony (catch 'em all) to też nie jest dobry pomysł.

0

Dzięki, Drugie działa, ale co do pierwszego to zrobiłem tak:

 
        private void button5_Click(object sender, EventArgs e)
        {
            using (OpenFileDialog open = new OpenFileDialog())
            {
                open.Filter = "txt files|*.txt";
                if (open.ShowDialog() == DialogResult.OK)
                {
                   listBox1.Items.AddRange(File.ReadAllLines(open.FileName));
                }
            }
        }

i wychodzi błąd odnośnie "File"

0

Przy czym SafeFileName jest specyficzne dla klasy OpenDialog. Rozwiązanie ogólne (gdy nie mamy dialogu) to Path.GetFileName("c:\\ścieżka\\do\\pliku.txt")

i wychodzi błąd odnośnie "File"

może brakuje using System.IO; ?

0

fakt, zgapiłem się
Sory, wszystko bangla jak trzeba

Dzięki i pozdro

0

Ok teraz ciąg dalszy

Witam,

Dzięki za pomoc,

Możesz mi jeszcze podpowiedzieć jak wymodzić pewną rzecz?

Mianowicie w C++ miałem klasę Play, która odpowiadała za odegranie pliku wav zaznaczonego w listBox

 
void __fastcall TForm1::Play()
{
	a=ListBox1->ItemIndex;
	if (ListBox1->ItemIndex==-1)
	{
		a=0;
	}
	AnsiString nazwa=ListBox1->Items->Strings[a];
	Label3->Caption=nazwa;
	sprintf(sciezka, "%s", nazwa.c_str());
	PlaySound(sciezka, NULL, SND_FILENAME | SND_ASYNC);
	}

Zrobiłem już wybieranie elementu z listBox-a i zapewnienie zerowego elementu przy niezaznaczonym żadnym
Nie wiem teraz jak do labela przyporządkować itema od a
I jeszcze problem jak pobrać całą ścieżkę do pliku, który dodałem do listboxa

 
        private void button1_Click(object sender, EventArgs e)
        {//PLAY
         int a;
         a = listBox1.SelectedIndex;
            if (a == -1)
            {
                a = 0;
            }
            SoundPlayer _Sound = new SoundPlayer( i tu potrzebuję ścieżkę);
            _Sound = Play();

        }

Dzięki z góry za pomoc

0
 listBox1.Items[a].ToString();

??

pozdrawiam
gibon93

0

już wszystko ogarnięte :)

Dzięki za pomoc :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1