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.
Maury
22 sierpnia 2010,
15:34
Ja mam dziwny problem, program dziala ladnie i wogole. Ale w Jak go uruchamiam to w lvOkno1 nie wyswietla sie nic jakby niedzialalo. Co moze byc nie tak?? Poprawilem wszystko z tych komentarzy, co jeszcze moge zrobic ??
Nerin
21 listopada 2010,
13:30
ListView ma wbudowane funkcje do czytania wszystkich plików i folderów, pisząc "Microsoft" nie wpadł na to, zapewne korzystasz z windowsa z zamkniętymi oczyma. Ale poradnik bardzo ładny.
Mich4el
28 stycznia 2011,
6:03
Prześlij ktoś proszę mi ten projekt gotowy
jezymut@gmail.com
max_zone
3 lutego 2011,
18:28
Witam dzieki wasyzm komentarza naprawilem te niewielkie bledy nadal nie dzialaja mi skroty klawiszowe nie ma takiej wlasnosci na buton shortkey ale wyczytalem w microsoft ze powino dzialas keydown
mam z tym kodem :
private void FTP_KeyDown(object sender, KeyEventArgs e)
{
switch (e.KeyCode)
{
case Keys.F5:
cmdOtworz_Click(null, null);
break;
case Keys.F6:
cmdKopiuj_Click(null, null);
break;
case Keys.F7:
cmdPrzenies_Click(null, null);
break;
case Keys.F8:
cmdUsun_Click(null, null);
break;
}
}
max_zone
3 lutego 2011,
18:28
Oczywiscie na zdazenie events nie kopiowanie recznie do kodu . Niestety
nie dziala probowalme messagesboxshow ale wogole nie dochodzi co
zadnego case zwykly if tez nie dziala probowalem na innym kodzie:
w innym zdarzeniu tez nie dziala Pomozcie
private void FTP_KeyPress(object sender, KeyPressEventArgs e)
{
switch (e.KeyChar)
{
case ((char)116):
cmdOtworz_Click(null, null);
break;
case ((char)117):
cmdKopiuj_Click(null, null);
break;
case ((char)118):
cmdPrzenies_Click(null, null);
break;
case ((char)119):
cmdUsun_Click(null, null);
break;
}
max_zone
3 lutego 2011,
18:30
Key_preview na true w wlasnosciach forma trzeba dac.No ok juz mam moglem poczekac z tym komentarzem ale no coz moze komus sie przydaja acii code :)
Kamil
24 czerwca 2011,
11:18
Panowie ale zauwazyliście ze gdy nie mam aktywnej listy z plikam klikamy button Usun to program sie wysypuje? jakby nie działał if(AktywneOkno == null) wicie co jest grane?
Kamil
24 czerwca 2011,
12:33
Okej zastosowanie zdarzenia Enter jest błedne focus dla kontrolki listaplikow ejst ustawiany zanim program sie uruchomi :) czyli jakby zawsze atywne okno nie będzie nullem i warunek if(aktywneokno ==null) nigdy nie zostanie spełniuony proponuje użyc zdarzenia click :)
Krzysiek Q
22 października 2011,
23:10
Interesuje mnie jedna rzecz. Czemu tak prosty projekt zajmuje 28Mb pamięci, gdzie cały działający Total Commader tylko 12? Jak to można odchudzić?
Dodaj swój komentarz