maly klopot z nową linią

0

witam.
staram sie podzielic tekst: string str = "pierwsza linia \n druga linia"; i wstawic wynik do edit boxa. zam iast przejscia do nastepnej linii w miejscu \n pojawia sie znaczek przypominajacy kwadrat i caly tekst pozostaje w tej samej linii.
tutaj link do zrzutu ekranu:
http://www.mariuszzaleski.com/pic.bmp

moze ktos wie dlaczego sie tak dzieje?

przy okazji druga sprawa. program pracuje nad szeregiem plikow po kolei. w statusLabel wyswietlam nazwe aktualnego pliku. cala procedura zamknieta jest w petli wiec windows nie ma mozliwosci odswierzac statusLabela i pokazywac kolejnych nazw plikow. po prostu nie wyswietla nic dopoki nie zakonczy petli, wtedy wszystko co widze to nazwa ostatniego pliku. w c++ i Api mozna bylo na sile wymusic odswierzenie kontrolki czy regionu ekranu. jak moge uzyskac ten sam efekt w C#?

pozdrawiam
Mariusz

0

W textbox'ie aby przejsc do nowej lini musisz uzyc kombinacji "\r\n", ktora symbolizuje wcisniecie klawisza enter (powrot karetki, nowa linia).

W celu poprawnego odswiezania tla aplikacji powiniennes cala dluzsza operacje przeniesc do innego watka. Jednakze istnieje mozliwosc przetworzenia wszystkich msg aplikacji nawet i podczas petli, dodaj w niej po prostu Application.DoEvents().

0

witam ponownie. skorzystalem z rady i stworzylem nowy watek wykonujacy operacjena plikach. Pojawil sie jednak inny problem. Kiedy watek zakonczy dzialanie czasem zachodzi potrzeba ponownego go uruchomienia. Probuje to robic wywolujac ta sama funkcje: thread.Start() ale otrzymuje wtedy taki wyjatek: Thread is running or terminated; it cannot restart.

Sprawdzilem wczesniej, ze funkcja watku na pewno sie zakonczyla. Nie wiem jak wystartowac ponownie ten sam watek bez powodowania tego wyjatku.

Dla rozjasnienia sytuacji, funkcja watku wyglada tak:

        public static void startThread()
        {
            for (int i = 0; i < fileNames.Count; i++)
            {
                encryptFile(fileNames[i].ToString());
            }
        }

watek wywoluje z innego miejsca programu tak:

thread.Start();

pozdrawiam
Mariusz

ps. jesli rozwiaze ten problem to praktycznie zakoncze prace nad malym projektem programu szyfrujacego pliki dowolnego typu. oczywiscie nie zapomne umiescic go na na ftp i podac linka tutaj :-)

0

po prostu przez wywolaniem Start() daj

thread = new Thread(new ThreadStart(this.startThread));
thread.Start();

i wszystko dziala :)
Jezeli nie wiesz czy stary watek sie skonczyl sprawdz to przez thread.IsAlive i wtedy thread.Abort() i dopiero tworzenie nowego watka.

0

Dziekuje. Teraz dziala. Sprawdzalem oczywiscie wczesniej czy watek nadal sie wykonuje. Nie rozymiem tylko dlaczego musze jeszcze raz konstruowac obiekt watku zamiast po prostu wywolac thread.Start().

pozdrawiam
Mariusz

0

Tak jak obiecałem wcześniej, oto link do małego projektu, który właśnie przed chwilą skończyłem z Waszą pomocą :-)
http://www.mariuszzaleski.com/pliki/programy/FileEncrypter.NET.rar

Byłbym wdzięczny za Wasze uwagi.

Pozdrawiam
Mariusz

0

A ten no kod pokazesz? bo malo kto lubi odpalac trojany :)

0

Takiego podejzenia sie nie spodziewalem szczerze mowiac.
Kod do pobrania tutaj:

http://www.mariuszzaleski.com/pliki/programy/FileEncrypterNet_src.rar

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