Monthly Archives: Kwiecień 2013

C# Przeciąganie pliku do okna programu (Drag and Drop)

Ten przykład ma za zadanie pokazać w jaki sposób można do swojego programu dodać możliwość przeciągania i upuszczania plików. W sumie trzeba przyznać że nie spodziewałem się iż może to być aż tak banalne, a jednak.

Więc do dzieła:

  1. Pierwszym krokiem jaki należy wykonać to zaznaczenie odpowiedniego Form’a, do którego chcemy dodać funkcje drag and drop.
  2. Przechodzimy do ustawień okna i zmieniamy opcję AllowDrop na true, co jest widoczne na zrzucie ekranowym poniżej.
    AllowDrop = true

    AllowDrop = true

  3. Przechodzimy do dodawania Eventów i tworzymy funkcje dla DragDrop i DragEnter:
    Tworzenie odpowiednich Eventów

    Tworzenie odpowiednich Eventów

    Continue reading

DataGridView kolejny problem, tym razem z CheckBox’ami

No i miałem kolejny problem z kochanym DataGridView, a konkretnie problem dotyczył CheckBox’ów w DataGridView. Nie byłem w stanie dobrze określić które z nich zostały zaznaczone, ponieważ wynik psuło mi podświetlenie ostatnio modyfikowanego wiersza. Poniższa funkcja, choć z pozoru poprawna, nie brała pod uwagę właśnie tego jednego wiersza który był podświetlony na niebiesko.

[csharp]

private void ZadaniaZaznaczoneDoListy()
{
ListaZaznaczenia = new ObslugaBazy(baza);
ListaZaznaczenia.RemoveAll();

for (int i = 0; i < dataGridView1.RowCount; i++)
{
if (dataGridView1.Rows[i].Cells[5].Value != null)
{
if ((bool)dataGridView1.Rows[i].Cells[5].Value == true)
{
ListaZaznaczenia.dodajZpliku(baza.lista()[i].nazwa, baza.lista()[i].tresc, baza.lista()[i].sciezka, baza.lista()[i].punkty);
}
}
}
}

[/csharp]

Okazało się że w momencie gdy ostatnią rzeczą którą robiłem przed uruchomieniem powyższej funkcji było zaznaczenie CheckBox’ów w DataGridView, to zaznaczenie nie zostawało zatwierdzone. Było tak jakby dalej w stanie edycji i przez to nie było brane pod uwagę.

[csharp]

private void ZadaniaZaznaczoneDoListy()
{
ListaZaznaczenia = new ObslugaBazy(baza);
ListaZaznaczenia.RemoveAll();

dataGridView1.CurrentCell.Selected = false; // dodałem tą linijkę, ponieważ usuwa zaznaczenie
for (int i = 0; i < dataGridView1.RowCount; i++)
{
dataGridView1.EndEdit(); // a ta linijka naprawia bład. Zakańcza edycje DataGridView
if (dataGridView1.Rows[i].Cells[5].Value != null)
{
if ((bool)dataGridView1.Rows[i].Cells[5].Value == true)
{
ListaZaznaczenia.dodajZpliku(baza.lista()[i].nazwa, baza.lista()[i].tresc, baza.lista()[i].sciezka, baza.lista()[i].punkty);
}
}
}
}

[/csharp]

Tym razem spędziłem nad rozwiązaniem tego problemu dobre 3 godziny. Na wielu stronach były różne rozwiązania ale żaden z nich mi nie pomagał, aż w końcu jakimś cudem doszedłem do tego rozwiązania.

Odświeżanie DataGridView z nowymi danymi

Problem z aktualizacją danych w DataGridView polegał na tym iż, miałem listę, do której były wczytywane dane z XMLa, a która to lista była z kolei wyświetlana w DataGridView. Jednakże po aktualizowaniu listy w DataGridView nic się nie działo. W sumie oczywiste. Więc wstawiłem polecenia:

[csharp]

zadaniaBindingSource.DataSource = baza.lista();
dataGridView1.DataSource = zadaniaBindingSource;

[/csharp]

I męczyłem się… Męczyłem, ponieważ nic się nie działo… Dosłownie nic. A okazało się że rozwiązaniem problemu jest po prostu:

 


[csharp]

zadaniaBindingSource.DataSource = null;
zadaniaBindingSource.DataSource = baza.lista();
dataGridView1.DataSource = null;
dataGridView1.DataSource = zadaniaBindingSource;

[/csharp]

Nie wiem dlaczego musiałem czyścić null’em DataSource. Mam tylko swoje przypuszczenia na ten temat, ale nic pewnego, więc jeżeli ktoś wie dlaczego tak się stało, niech pisze komentarz.

GemBox.Document, czyli generator dokumentów docx, pdf, itp dla C#

Opis komponentu:

GemBox.Document jest to .NET-owy komponent który udostępnia programistom możliwość czytania, zapisywania, konwertowania czy też drukowania plików (DOCX, PDF, XPS, HTML) w możliwie najbardziej przyjazny i szybki sposób. Osobiście to narzędzie poznałem podczas pisania aplikacji do generowania sprawdzianów i sprawdził się rewelacyjnie, ponieważ nie musiałem więcej martwić się o niskopoziomowe programowanie dokumentów, tylko mogłem po prostu wprowadzać tekst, dowolnie go formatować i robiłem to kilkoma poleceniami, zamiast setek linijek tekstu.

Continue reading

Wybrane struktury danych C++

Sporządziłem dla Was informację o wybranych strukturach danych w C++. Sprawdźcie i oceniajcie moją pracę. Niebawem powinny się ukazać kolejne opracowania.

[spoiler show=”Tablica” hide=”Ukryj”]

[docstoc docId=”152163561″ mId=”35658353″ width=”630″ height=”550″ slideMode=”false” showRelatedDocs=”false” showOtherDocs=”true” allowdownload=”true” url=”http://www.docstoc.com/docs/152163561/Tablice-C++-(Arrays-C++)”]Tablice C++ (Arrays C++)[/docstoc]

[/spoiler]

[spoiler show=”Stos” hide=”Ukryj”]

[docstoc docId=”152163669″ mId=”35658353″ width=”630″ height=”550″ slideMode=”false” showRelatedDocs=”false” showOtherDocs=”true” allowdownload=”true” url=”http://www.docstoc.com/docs/152163669/Stos-C++-(Stack-C++)”]Stos C++ (Stack C++)[/docstoc]

[/spoiler]

[spoiler show=”Kolejka” hide=”Ukryj”]
[docstoc docId=”152163617″ mId=”35658353″ width=”630″ height=”550″ slideMode=”false” showRelatedDocs=”false” showOtherDocs=”true” allowdownload=”true” url=”http://www.docstoc.com/docs/152163617/Kolejka-C++-(Queue-C++)”]Kolejka C++ (Queue C++)[/docstoc]
[/spoiler]

[spoiler show=”Struktura” hide=”Ukryj”]
[docstoc docId=”152211994″ mId=”35658353″ width=”630″ height=”550″ slideMode=”false” showRelatedDocs=”false” showOtherDocs=”true” allowdownload=”true” url=”http://www.docstoc.com/docs/152211994/Struktury-C++-(Struct)”]Struktury C++ (Struct)[/docstoc]
[/spoiler]