Komentarze do Commander w C#
kamas
12 lipca 2007,
14:11
Przykład bardzo ciekawy, ale wydaje mi się, że wkradł się mały błąd:
Wywołanie funkcji lvOkno_MouseDoubleClick(object sender, MouseEventArgs e) z parametrami null powoduje zgłoszenie wyjątku (takie wywołanie ma miejsce wewnątrz funkcji cmdOtworz_Click(object sender, EventArgs e)). Powodem zgłoszenia wyjątku jest poniższa instrukcja warunkowa w funkcji lvOkno_MouseDoubleClick:
if (e.Button == MouseButtons.Left)
Ponieważ obiekt e nie istnieje (przekazaliśmy null do funkcji) nie można go z niczym porównywać.
Dla mniej doświadczonych czytelników przedstawiam proste rozwiązanie:
Instrukcja warunkowa powinna wyglądać tak:
if (e == null || e.Button == MouseButtons.Left)
Ważne jest, aby warunek e == null występował jako pierwszy, gdyż jeśli jest on spełniony to 2 warunek nie będzie sprawdzany i nie wygeneruje błędu (skrócone wyznaczanie wartości wyrażeń).
I jeszcze jedna rzecz, którą bym zmienił/poprawił: funkcja wyswietl() może wygenerować wyjątek jeśli spróbujemy otworzyć katalog, do którego nie mamy dostępu (np System Volume Information). Wystarczy umieścić kod funkcji w bloku try, natomiast w bloku catch wstawić MessageBox z informacją o braku dostępu do katalogu.
mon
23 lipca 2007,
14:08
hmmm, coś MouseDoubleClick nie działa...
x or y?
12 sierpnia 2007,
1:30
Hmm...wszystko pieknieładnie ale prosiłbym o gotowy projekt, wielka prośba. z góry dziekuję.
Napi
20 listopada 2007,
14:51
Może nieuważnie coś przekleiłem gdzie indziej, ale... u mnie wchodząc w katalog na dysku innym niż C: program się sypał - katalogu wyświetlonego (np.) z D: szukał na C:... Najprościej dodać linkijkę dla ComboBox"ów jak poniżej:
private void Dysk1_SelectedIndexChanged(object sender, EventArgs e)
{
sciezka1 = cbxDysk.Text;
AktywnaSciezka = cbxDysk.Text; //poprawka
pewoj
8 stycznia 2008,
20:32
zrobiłem zapisałem i uruchamiam aplikację nagle w polach Dysk 1 2
liOkno 1 2 są puste co zrobiłem zle
Vesp3r
1 marca 2008,
14:24
Wszystko łądnei pięknei ale niedziała w ogóle :|
Program wysypuje się u mnie już na "FileInfo plik;" i pokazuje ze takeigo czegoś nie moze znaleźć :/
krho
23 czerwca 2008,
0:13
@Vesp3r
musisz dodać na początku
using System.IO;
Janekk
30 października 2008,
0:41
wszystko extra zrobilem i niedziala nie wyswietla mi nic w ComboBoxie oraz w ListView... kompletnie puste... kto wysle dzialajacy projekt? z gory dzieki... GG:6347525
Janekk
10 listopada 2008,
14:42
to ktos mi powie jak to zrobic, lub da projekcik? :)
Justin
7 grudnia 2008,
0:28
ty janek pewnie skopiowales caly kod do siebie tak? musisz ręcznie wywolac eventy dla form bo program ich nei widzi jak je skopiujesz pozatym jest tam pare burakow nazewniczych
bzzzz
7 grudnia 2008,
0:51
w obsludze kopiowania jest mozliwosc zapetlenia rekurencji :">
a nikt nie lubi miec duzo folderow o tej samej nazwie jeden pod drugim :">
ja to tak rozwiazalem:
<br /> if (AktSciezka + AktOkno.SelectedItems.Text + "\\" == NAktSciezka)<br /> {<br /> MessageBox.Show("NIE WOLNO ZAPETLAC REKURENCJI!! ", "error");<br /> return;<br /> }<br /> <br /> zrodlo = AktSciezka + AktOkno.SelectedItems.Text + "\\";<br /> cel = NAktSciezka + AktOkno.SelectedItems.Text + "\\";<br /> KopejDira(zrodlo, cel);<br />
freemp3
8 grudnia 2008,
16:15
No programik bardzo ładnie tyle, że nie działa. Normalnie się włącza ale, że tak powiem nic nie robi. W combobox-ach moge pisać co chce i jest zero reakcji, przyciski też sobie moge wćiskać ile chce i nic. Tak jak by wogóle kodu z funkcjami nie było :/
HANYS
24 grudnia 2008,
13:22
Nie działa mi ten program nie moge dysków otwierac w comboboksie a potrzebuje drzewko plików i folderów zboku do mojej przegladarki prosze o pomoc GG 1069394
Janekk
4 stycznia 2009,
18:54
nic nie rozumiem wezcie mi napiszcie projekcik dzialajacy, 5% osobom sie udalo zrobic a 95% nie umie...
Alucard
17 stycznia 2009,
17:08
Podaj maila to prześle Ci działający programik
Janekk
19 stycznia 2009,
22:27
VandziorX@o2.pl
dziex ;)
Janekk
19 stycznia 2009,
22:28
(sory ze 2 posty na raz)
ale projekt daj ok ;) z gory dzieki ;)
Maciek
28 stycznia 2009,
21:58
Też mam pytanie, wydaje mi się że wszystko zrobiłem dobrze, a mimo to po włączeniu programu, nie wyświetla się zawartoś dysków mimo iż program zczytuje wszystkie napędy w komputerze? Co może być nie tak?
Eider878
15 lutego 2009,
10:13
Właśnie, coś jest nie tak z tym kodem...
ES
15 lutego 2009,
17:18
Może mi ktoś przesłać projekt na emaila: robotboy111@gmail.com
Z góry dziękuję
tajniak
27 lutego 2009,
12:44
Ej! Przecie zrobienie tego to bułka z masłem. Fakt, że jest tam błąd, ale pierwszy komentarz kamas"a pokazuje jak go rozwiązać. I nie przeklepujcie w ciemno kodu - przeczytajcie komentarz Justin:
"ty janek pewnie skopiowales caly kod do siebie tak? musisz
ręcznie wywolac eventy dla form bo program ich nei widzi jak je
skopiujesz pozatym jest tam pare burakow nazewniczych "
...
wszystko działa ... wystarczy czytac ...
ES
4 marca 2009,
21:25
Jeżeli jesteś taki mądry to pokaż to i daj link do pliku
MP
5 marca 2009,
18:48
Nie wiem dlaczego, ale po kompilacji programu wyświetla się tylko interface... żadna z funkcji programu nie działa (po prostu tak jakby jej nie było). Poza tym wywala błąd using System.Linq; oraz odwołuje się do nazwy Directory.
Jeżeli są w śród nas jeszcze dobrzy ludzie to proszę niech ktoś mi podeśle działający kod źródłowy pod:
pawel-m_p@tlen.pl
z góry dzięki :">
Janekk
9 marca 2009,
21:12
ok pogrzebalem i nie dzialalo ale na forum jednym napisalem i odrazu pomogli ;)
ES
12 marca 2009,
20:43
Mógłbyś podać adres tego forum?
ES
15 marca 2009,
16:08
Trochę pogrzebałem i działa, tylko na Win Vista mówi, że błąd dostępu do dysku, ale na XP działa...
HERKI
11 maja 2009,
9:00
Witam. Mam do Was pytanie, czy komuś działają przyciski funkcyjne (F5,F6,F7,F8) ?? Jeśli ktoś ma na to rozwiązanie to proszę o kontakt na GG:1905825 lub herki17@gmail.com
maksio1
6 czerwca 2009,
9:19
Co do przycisków funkcyjnych, to trzeba jedynie ustawić we właściwościach przycisku odpowiedni skrót klawiszowy we właściwości przycisku: "ShortcutKeys". Potem ustawić zdarzenie "ShowShortcutKeys" na false. Podobnie z resztą przycisków. No i po co się tak męczyć ze skrótami?
Szefik
8 lipca 2009,
21:05
moglby ktos wysłać ten program na mail szefik19@wp.pl
Z góry dzięki...
Ufolec
10 lipca 2009,
11:59
Ludzie ja nie wiem w czym wy widzicie problem, uważam że wszelkie kłopoty zostały rozwiane w komentarzach powyżej różnych ludzi.
Jeśli nie robiliście tego sami tylko skopiowaliście kod i dodaliście kontrolki, to jeśli chcecie by program coś robił - POWINNIŚCIE DO ZDARZEŃ KONTROLEK (EVENT) DODAĆ POSZCZEGÓLNE FUNKCJE, było już o tym kilka razy pisane, ale nadal macie z tym problem? Poza tym chciałbym w tym komentarzu podziękować za tego Commandera, oraz chociażby autorowi pierwszego komentarza (kamas) który bardzo szybko uporał się z małymi niedoróbkami projektu i się tym podzielił z resztą świata. Sam artykuł oceniam na pełne 4. Pozdrawiam.
MAT44869
22 września 2009,
17:02
Nie Wiem o co Wam chodzi, wsztko działa idealnie! I nie kopiujcie w sślepo kodu bo się pogubicie! Myślcie co kopiujecie i gdzie to dajecie.
jj
18 listopada 2009,
12:36
a ja mając Win7 nie mogę się dostać do katalogu "Documents and Settings" zwraca wyjątek - brak dostępu. jak to można rozwiazać?
J
20 listopada 2009,
20:48
Jakby nie patrzyć program tochę lipny. W normalnych systemach obok nazwy katalogu lub pliku pojawia się jego ikonka. A tu? Auto poszedł na łatwiznę i wylistował jedynie zawartość katalogu. :-/
eidersoft
14 stycznia 2010,
15:31
Jeżeli ktoś ma jakieś problemy z kompilacja możecie pobrać kod źródłowy + skompilowany program pod adresem: http://www.eider.boo.pl/upload/Commander.zip
dzadzar
29 stycznia 2010,
14:48
link niestety nie działa:( można jeszcze raz upnąć?
Beginner
19 lutego 2010,
0:02
Działa w sumie, ale trzeba wszystkie eventy wywołać ;)
$tomek
3 marca 2010,
18:31
Po drobnych problemach udało się! Programik działa, jest ok
Paweł
5 marca 2010,
11:17
Jak dodać event dla kontrolki?
Ania
30 marca 2010,
14:34
Co do zapetlania się rekurencyjnie wywoływanej procedury KopiujKatalog, wystarczy w niej zamienić miejscami 2 wiersze na:
nazwy = Directory.GetFileSystemEntries(zrodlo);
if (!Directory.Exists(cel)) Directory.CreateDirectory(cel);
i to, o czym pisał: bzzzz
7 grudnia 2008,
0:51 - jest już zbedne.
Dodaj swój komentarz