Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

Programowanie urządzeń mobilnych

Podobne prezentacje


Prezentacja na temat: "Programowanie urządzeń mobilnych"— Zapis prezentacji:

1 Programowanie urządzeń mobilnych
Paweł Fiderek 2011

2 Wykład 3 – Windows Mobile wprowadzenie
Historia systemu Pochodzenie Rozwój kolejnych wersji Wprowadzenie Podstawowe elementy GUI Wprowadzenie do programowania urządzeń z systemem Windows Mobile PUM wykład 3 Paweł Fiderek

3 PUM wykład 3 Paweł Fiderek
Windows CE – system operacyjny opracowany przez Microsoft jako system dla urządzeń przenośnych typu PDA (np.: Pocket PC lub Palm) lub jako system wbudowany. Wersja 1.0 była bardziej rozbudowanym organizerem niż systemem operacyjnym (z punktu widzenia użytkownika.) Windows CE jest zoptymalizowany dla urządzeń o minimalnej pamięci – jądro Windows CE może być uruchomione nawet w 1 MB pamięci. System nie wymaga do pracy dysku twardego, może być więc „system zamkniętym”, i być umieszczony w pamięci ROM. Obsługuje 256 priorytetów wykonywania i korzysta z dziedziczenia priorytetów w razie, przydatnych w sytuacji inwersji priorytetów. Podstawową jednostką wykonywania jest wątek, co umożliwia prostsze zarządzanie procesami. Windows CE używany jest także w komputerach pokładowych samochodów wraz z systemem rozpoznawania mowy mającym zapewnić bezdotykową obsługę systemu operacyjnego. PUM wykład 3 Paweł Fiderek

4 PUM wykład 3 Paweł Fiderek
Windows CE 1.x specyfikacja urządzeń na których system miał pracować : Wymiary nie większe niż 18x10x2.5 cm Zasilanie z dwóch baterii AA Waga mniejsza niż 500 g Klawiatura QWERTY zawierająca klawisze takie jak SHIFT, CTRL i ALT Dotykowy wyświetlacz LCD o rozdzielczości 480x240 pikseli w 4 odcieniach szarości Minimum 4 MB pamięci ROM Minimum 2 MB pamięci RAM Port podczerwieni Port COM zgodny z RS-232 Slot PC Card (PCMCIA) Wbudowana obsługa dźwięku Procesor SuperH 3, MIPS 3000 lub MIPS 4000 Microsoft nie wypowiedział się jednoznacznie co oznacza skrót CE, lecz twierdzi, że taka nazwa nie była celowa. Oświadczył jednak, że CE wyrażać może w sobie wiele koncepcji, takich jak Compact (ang. Kompaktowy), Connectable (ang. Łącznościowy), Compatible (ang. Kompatybilny). Najczęściej jednak nazwę tłumaczy się jako "Compact Edition" lub "Consumer Electronics". PUM wykład 3 Paweł Fiderek

5 PUM wykład 3 Paweł Fiderek
Wygląd GUI systemu Windows CE 1.0 Źródło: Internet. PUM wykład 3 Paweł Fiderek

6 PUM wykład 3 Paweł Fiderek
Wersje systemu 1 Windows CE 1.x 2 Windows CE HandheldPC 2.x 3 Windows CE Palm-Size PC Windows CE Palm-Size PC Windows CE HandeldPC HandheldPC Professional 6 Windows CE HandeldPC 3.x - HandheldPC Windows CE .net (4.x) 8 Windows CE Windows CE 6.0 10 Windows Mobile (i ten system również posiada kilka wersji.) Od wersji 4.0 z systemem zintegrowano .NET Compact Framework. Windows CE 6.0 powstał we wrześniu 2006 roku. Nazwa kodowa "Yamazaki". M.in. zwiększono przestrzeń adresową procesu z 32 MB do 1 GB i umożliwiono uruchomienie procesów (w porównaniu z 32 w wersji 5.0). PUM wykład 3 Paweł Fiderek

7 PUM wykład 3 Paweł Fiderek
Microsoft Windows Mobile Microsoft Windows Mobile to 32-bitowy system operacyjny przeznaczony dla urządzeń typu Pocket PC oraz Smartphone. Windows Mobile nie jest zupełnie osobnym systemem, lecz rozszerzeniem Windows CE o dodatkową funkcjonalność, API (ang. Application Programming Interface) oraz Shell. Dostępne wersje Systemu: Windows Mobile 2003 Windows Mobile 2003SE Windows Mobile 5.0 Windows Mobile 6.0 (64 MB RAM, wyświetlacz 3,5 cala) Windows Mobile 6.1 Classic Istnieją wersje przeznaczone dla PocketPC z wbudowanym modułem GSM: Windows Mobile 2003 Premium Phone edition Windows Mobile 2003SE Phone edition Windows Mobile 5.0 (Magneto) Phone edition Windows Mobile 6.0 Phone edition Windows Mobile 6.1 Professional Windows Mobile 6.5 Professional Windows Mobile Professional (w trakcie rozwoju) Windows Mobile 7 Professional (w trakcie rozwoju) PUM wykład 3 Paweł Fiderek

8 PUM wykład 3 Paweł Fiderek
Istnieją również wersje dla smartphone obsługujące ekrany 176x220 oraz 240x320 bez ekranu dotykowego: Smartphone 2002 Windows Mobile 2003 for Smartphone Windows Mobile 2003SE for Smartphone Windows Mobile 5.0 for Smartphone Windows Mobile 6.0 for Smartphone Windows Mobile 6.1 Standard Wygląd GUI systemu Windows Mobile 5.0 Źródło: Internet. PUM wykład 3 Paweł Fiderek

9 PUM wykład 3 Paweł Fiderek
.NET Compact Framework Platforma umożliwiająca uruchamiane aplikacji napisanych w językach rodziny .NET, bedaca swego rodzaju maszyną wirtualną (jak np. JVM). Zatem można powiedzieć, że .Net Framework to maszyna wirtualna udostępniająca biblioteki, odpowiedzialne za nisko-poziomową interakcję z systemem operacyjnym, językom zarządzanym (ang. managed) wysokiego poziomu, np. C#. Kod napisany w C# czy J# jest najpierw kompilowany do pośredniego języka MSIL (Microsoft Intermediate Language). Wynikiem tego działania jest moduł zawierający instrukcje MSIL. Jedną z przyczyn zastosowania MSIL jest mozliwość wykorzystywania wielu języków programowania (VB, C#, J#, JScript, i Visual C++), skąd pojawia się konieczność pośredniej kompilacji kodu do MSIL. Następnie, moduł ten zamieniany jest na natywne instrukcje danego systemu operacyjnego CLR (ang. Common Language Runtime). Zatem .Net Framework postrzegać powinno się bardziej, jako platformę wielojęzykową, a nie jak maszynę wirtualną (jak np. maszyna wirtualna Javy) – wieloplatformową. Przeprowadzane są obecnie prace nad rozszerzeniem owych pięciu wspieranych języków programowania do ponad dwudziestu pięciu . PUM wykład 3 Paweł Fiderek

10 PUM wykład 3 Paweł Fiderek
Architektura .NET Compact Framework Źródło: Internet PUM wykład 3 Paweł Fiderek

11 PUM wykład 3 Paweł Fiderek
Common Language Runtime – wspólne środowisko uruchomieniowe. Jego podstawowym zadaniem jest zlokalizowanie, wczytywanie oraz zarządzanie typami .NET w imieniu użytkownika. CLR zajmuje się niskim poziomem pracy aplikacji np.: automatyczne zarządzanie pamięcią, integracją językową oraz ułatwianie wdrożenia ( i wsparcie dla różnego rodzaju wersji ) bibliotek kodu binarnego. CLR składa się z dwóch zasadniczych elementów: Runtime execution engine - mechanizm wykonawczy środowiska uruchomieniowego – mscoree.dll. Kiedy pakiet ( assembly ) jest wywoływany, automatycznie wczytywany jest mscoree.dll, który z kolei wczytuje do pamięci potrzebny pakiet. Mechanizm uruchomieniowy jest odpowiedzialny za wykonanie szeregu zadań. Pierwszym i najważniejszym jest określenie położenia pakietu i znalezienie wymaganego typu ( np. klasy, interfejsu, struktury itp. ) w kodzie binarnym przez odczytanie dostarczonych metadanych. Mechanizm wykonawczy kompiluje zasocjowany IL ( Intermediate Language ) do instrukcji specyficznych dla danej platformy. Biblioteka klas podstawowych. Składa się z kilku oddzielnych pakietów, najważniejszym jest mscorlib.dll. Zawiera dużą liczbę podstawowych typów, które hermetyzują dużą różnorodność najczęściej spotykanych zadań programistycznych. Każde rozwiązanie oparte na platformie .NET, zawsze wykorzystuje się ten pakiet i czasem kilka innych .NET ( zarówno oferowanych przez system jak i przygotowanych przez użytkownika ). Common Language Specification – specyfikacja wspólnego języka. Jest zbiorem zasad definiujących podzbiór wspólnych typów (dla różnych języków), który daje pewność, że kod binarny .NET może zostać bez klejenia wykorzystany przez wszystkie języki współpracujące na platformie .NET. PUM wykład 3 Paweł Fiderek

12 PUM wykład 3 Paweł Fiderek
Common Type System – zbiór wbudowanych podstawowych i wspólnych typów. Zawiera pełny opis wszystkich możliwych typów danych, obsługiwanych przez środowisko uruchomieniowe. Zawiera także informacje, o tym, jakie interakcje mogą zachodzić między nimi, oraz określa szczegóły ich reprezentacji w formie metadanych .NET. Managed Code - Kompilatory zgodne z CLR zamieniają kod źródłowy aplikacji na kod wykonywalny, zapisany w standardowym języku pośrednim MSIL, oraz na metadane — informacje na temat kodu wykonywalnego oraz danych wykorzystywanych przez ten kod. Platforma .NET umożliwia pisanie aplikacji w wielu językach, ale dzięki MC kompilator zamienia wszystkie operacje na typach danych, to jest klasach, strukturach, liczbach całkowitych, łańcuchach znaków — na język MSIL i metadane. W czasie wykonywania aplikacji, CLR tłumaczy kod MSIL na kod maszynowy (natywny) procesora, na którym wykonywana jest aplikacja. Taka konwersja kodu z MSIL na kod maszynowy daje możliwość zarządzania wykonywaniem aplikacji, co pozwala uniknąć wielu problemów — stąd nazwa ”kod zarządzany”. Garbage Collection – .NET Compact Framework zapewnia zwalnianie wszystkich zasobów, z jakich korzysta aplikacja, po jej zakończeniu. W tym celu wykorzystywany jest mechanizm o nazwie Garbate Collection. Compact Framework decyduje kiedy powinien zostać uruchomiony proces Garbage Collection. Może on zostać uruchomiony w pojedynczej domenie aplikacji bądź też we wszystkich dostępnych. Pozwala to zapobiegać sytuacją, gdy jedna aplikacja zużywa zbyt dużo pamięci w porównaniu z innymi. PUM wykład 3 Paweł Fiderek

13 Podstawy działania Garbage collection
Garbage collection (zbieranie nieużytków) to architektura zarządzania pamięcią, w której proces zwalniania nieużywanych jej obszarów odbywa się automatycznie. Mechanizm taki stosuje się na przykład w wysokopoziomowych językach programowania, przy czym za jego obsługę nie odpowiada sam język, lecz wirtualna maszyna. Garbage collection zostało wymyślone przez Johna McCarthy'ego około roku 1959 do rozwiązania problemu ręcznego zarządzania pamięcią w Lispie. Był to pierwszy język obsługujący ten mechanizm. Przykładowymi językami obsługującymi ten mechanizm są Smalltalk, Python, Ruby, Java, C#. Istnieje co najmniej kilka metod pracy GC. Liczenie odnośników (reference counting) W tej metodzie każda jednostka zarezerwowanej pamięci ma licznik, w którym jest zapisana liczba odwołań do tej jednostki. Za każdym razem, kiedy dodajemy odwołanie, zwiększamy licznik we wskazywanej jednostce, a kiedy odwołanie usuwamy, zmniejszamy licznik. Jeśli wartość licznika osiągnęła zero, to usuwamy wszystkie odnośniki wychodzące z tego obszaru pamięci i zwalniamy go. Metoda ta nie gwarantuje zwolnienia wszystkich niepotrzebnych obszarów w sytuacji, gdy występują tzw. wzajemne (cykliczne) odwołania. Przykładowo, jeśli X zawiera wskaźnik na Y, a Y zawiera wskaźnik na X (np. są to dwa komunikujące się ze sobą obiekty), licznik w żadnym z nich nigdy nie osiągnie zera. PUM wykład 3 Paweł Fiderek

14 PUM wykład 3 Paweł Fiderek
W liczeniu odnośników dodatkowe obliczenia związane z pracą kolektora nieużytków są rozłożone w czasie, gdyż wszystkie operacje muszą dbać o liczniki, co może skutkować znacznie mniejszym - lub też przeciwnie - znacznie większym, obciążeniem w porównaniu z innymi metodami. Mark and Sweep. W tej metodzie każda jednostka pamięci zawiera pojedynczy bit, który jest na początku czysty. Kiedy maszyna wirtualna przechodzi w fazę "garbage collection", zaczyna sprawdzać obiekty, o których wie, że istnieją do nich odwołania, zaznacza w nich ten bit i rekursywnie przechodzi przez wszystkie komórki przez nie wskazywane. Kiedy już wszystko zostało oznaczone, komórki bez znacznika są zwalniane, bo na pewno nic na nie nie wskazuje, po czym znacznik jest czyszczony wszystkim komórkom. Mark and Sweep jest obecnie najpopularniejszą metodą. Garbage collection przez kopiowanie Ta metoda polega na tym, że wszystko zostaje rekursywnie przekopiowane do innego obszaru w pamięci - najpierw kopiowany jest początkowy zestaw danych, potem wszystko co było przez niego wskazywane, itd. Na końcu zwalniamy początkową pamięć. W ten sposób „przez odsiew” usuwane zostają elementy, na które nic nie wskazuje. I w ten sposób oszczędza się na konieczności ustawiania bitów w "mark and sweep", dodatkowo, regularnie defragmentuje się pamięć. Problemy jakie mogą wystąpić to konieczność poniesienia kosztu kopiowania oraz konieczność posiadania dużej ilości wolnej pamięci. Ten sposób byłby bardziej praktyczny na systemach, na których możliwa jest tymczasowa alokacja dużej ilości pamięci. PUM wykład 3 Paweł Fiderek

15 PUM wykład 3 Paweł Fiderek
Class Library Support Klasy są zorganizowane hierarchicznie wewnątrz przestrzeni nazw ( namespace ). .NET Compact Framework współdzieli około 2/3 klas z pełną wersją .NET Framework. Mimo to występują pomiędzy nimi pewne istotne różnice, i trzeba być tego świadom podczas tworzenia aplikacji z wykorzystaniem .NET Compact Framework. Klasy współdzielone: .NET Compact Framework dostarcza szeroki podzbiór klas i metod do budowania aplikacji, które są później uruchamiane na urządzeniach z ograniczonymi zasobami. Wszystkie te klasy są semantycznie kompatybilne z klasami o tych samych nazwach w .NET Framework. .NET Compact Framework posiada wsparcie dla istotnych elementów takich jak: ·         Usługi sieci Web oparte na XML ·         Zarządzanie relacyjnymi danymi ·         Rozbudowana funkcjonalność XML ·         Rozbudowane klasy do rysowania, takie jak Image Controls ·         Potężne możliwości budowania interfejsu użytkownika. .NET Compact Framework nie wspiera klas ASP .NET. PUM wykład 3 Paweł Fiderek

16 PUM wykład 3 Paweł Fiderek
Dalsze różnice ·         - COM Interop – nie wspierane, należy wykonywać funkcje DLL, które wywołują obiekty COM - Data – podzbiór implementacji ADO .NET oraz SQL Server CE - ASP .NET – nie wspierany. Należy używać ASP .NET Mobile Web Controls do tworzenia stron sieci WWW dla urządzeń przenośnych - XML – ze względu na rozmiar brak obsługi walidacji XML schema lub zapytań XPath w dokumentach XML. - Aby zmniejszyć rozmiary środowiska zrezygnowano z wielu przeładowanych metod - Brak niektórych kontrolek ( np. wsparcia dla drukowania ) - Ze względu na wydajność brak klas BinaryFormatter i SoapFormatter - Bezpieczeństwo – brak zabezpieczenia dostępu do kodu niezarządzanego. Dowolna aplikacja może wywołać dowolny system lub nie systemowe API. Brak systemu bezpieczeństwa opartego na rolach PUM wykład 3 Paweł Fiderek

17 PUM wykład 3 Paweł Fiderek
·         - COM Interop – nie wspierane, należy wykonywać funkcje DLL, które wywołują obiekty COM - Data – podzbiór implementacji ADO .NET oraz SQL Server CE - ASP .NET – nie wspierany. Należy używać ASP .NET Mobile Web Controls do tworzenia stron sieci WWW dla urządzeń przenośnych - XML – ze względu na rozmiar brak obsługi walidacji XML schema lub zapytań XPath w dokumentach XML. - Aby zmniejszyć rozmiary środowiska zrezygnowano z wielu przeładowanych metod - Brak niektórych kontrolek ( np. wsparcia dla drukowania ) - Ze względu na wydajność brak klas BinaryFormatter i SoapFormatter - Bezpieczeństwo – brak zabezpieczenia dostępu do kodu niezarządzanego. Dowolna aplikacja może wywołać dowolny system lub nie systemowe API. Brak systemu bezpieczeństwa opartego na rolach PUM wykład 3 Paweł Fiderek

18 PUM wykład 3 Paweł Fiderek
MMIT dostarcza wszelkich korzyści projektowania aplikacji z pomocą ASP .NET. Ponadto MMIT posiada następujące udogodnienia: - Wsparcie dla szerokiej gamy urządzeń. Pozwala na używanie ASP .NET na wielu urządzeniach mobilnych, począwszy na telefonach komórkowych, skończywszy na urządzeniach Pocket PC. - Strony WWW stworzone z wykorzystaniem MMIT są tak samo prezentowane na wszystkich wspieranych urządzeniach, nie trzeba jej dostosowywać do poszczególnych urządzeń. Można tworzyć złożoną aplikację wykorzystując zbiór mobilnych kontrolek serwerowych bez żadnej wiedzy na temat WML-a lub innych podobnych języków. Środowisko uruchomieniowe bierze na siebie odpowiedzialność za różnice w implementacjach pomiędzy różnymi przeglądarkami, urządzeniami i bramkami sieciowymi. - Możliwość personalizacji i rozszerzania funkcjonalności. MMIT dostarcza takie same możliwości personalizacji i rozszerzalności jak ASP .NET. W dodatku narzędzie pozwala na dodawanie obsługi nowych urządzeń, bez konieczności jakiejkolwiek zmiany w kodzie aplikacji. Dzięki temu można mieć pewność, że aplikacja stworzona dzisiaj będzie w przyszłości działała na nowej generacji urządzeń. PUM wykład 3 Paweł Fiderek

19 Możliwości programistyczne w Windows Mobile 5.0
Windows Mobile 5.0 zapewnia programistom nowe, liczne interfejsy programistyczne. Dzięki nim, programista może się skupić na konkretnych celach aplikacji, a nie sposobach ich realizacji. Elementy wspomaganie przez interfejsy to np.: rysowanie 2D i 3D, dostarczają nowych możliwości komunikacyjnych oraz ułatwiają obsługę elementów sprzętowych takich jak kamera czy też system nawigacji satelitarnej. Inne usprawnienia to m. in. : Nowe interfejsy API dostarczają wielu nowych możliwości np.: zarządzanie obrazami, kontaktami, Większa przenośność kodu i aplikacji pomiędzy urządzeniami Pocket PC a Smartphone. Nowe API do śledzenia aktywności systemu takich jak: zmiany w połączeniu z siecią, odbiór wiadomości SMS lub nadejście połączenia telefonicznego; Rozbudowane narzędzia do testowania aplikacji w zależności od orientacji ekranu, rozdzielczości czy też rodzaju urządzenia – przyspieszają tworzenie aplikacji w Visual Studio. API do obsługi wbudowanego aparatu. Windows Media Player 10 Mobile pozwala na łatwa dołączenie multimediów do tworzonej aplikacji (np. wbudowanie odtwarzacza multimedialnego). Obsługa Direct3D dostarcza możliwości tworzenia aplikacji trójwymiarowych. Obsługa DirectDraw zapewnia większą kontrolę i elastyczność w aplikacjach 2D. PUM wykład 3 Paweł Fiderek

20 PUM wykład 3 Paweł Fiderek
Windows Mobile 5.0 posiada zainstalowane domyślnie w pamięci ROM środowisko .NET Compact Framework 1.0 wraz z SP3. Możemy wyróżnić trzy rodzaje API: - Nowo dodane API kierowane do programistów tworzących aplikacje w kodzie natywnym; - Istniejące wcześniej natywne API, ale teraz dodatkowo dostępne dla programistów kodu zarządzanego; - Nowo dodane API dostępne zarówno dla programistów kodu natywnego jak i zarządzanego. PUM wykład 3 Paweł Fiderek

21 Programowanie GUI w Windows Mobile
PUM wykład 3 Paweł Fiderek

22 PUM wykład 3 Paweł Fiderek
Check Box cb = new CheckBox(); cb.Content = "CheckBox"; spanel2.Children.Add(cb); <Style x:Key="Properties" TargetType="{x:Type CheckBox}"> <Setter Property = "Background" Value= "Purple"/> <Setter Property = "Foreground" Value= "Green"/> <Setter Property = "BorderBrush" Value= "Black"/> <Setter Property = "BorderThickness" Value= "5"/> </Style> PUM wykład 3 Paweł Fiderek

23 PUM wykład 3 Paweł Fiderek
Combo Box this.comboBox1 = new System.Windows.Forms.ComboBox(); AddItemsCore Contains OnDoubleClick RefreshItems PUM wykład 3 Paweł Fiderek

24 PUM wykład 3 Paweł Fiderek
Command Button Pocket PC Smartphone btncsharp = new Button(); btncsharp.Content = "Created with C# code."; btncsharp.Background = SystemColors.ControlDarkDarkBrush; btncsharp.FontSize = SystemFonts.CaptionFontSize; cv2.Children.Add(btncsharp); <Style x:Key="Triggers" TargetType="Button"> <Style.Triggers> <Trigger Property="IsMouseOver" Value="true"> <Setter Property = "Background" Value="Red"/> </Trigger> <Trigger Property="IsPressed" Value="true"> <Setter Property = "Foreground" Value="Green"/> </Trigger> </Style.Triggers> </Style> PUM wykład 3 Paweł Fiderek

25 PUM wykład 3 Paweł Fiderek
Context Menu ContextMenu mnuContextMenu = new ContextMenu(); this.ContextMenu = mnuContextMenu; MenuItem mnuItemNew = new MenuItem(); MenuItem mnuItemOpen = new MenuItem(); mnuItemNew.Text = "&New"; mnuItemOpen.Text = "&Open"; mnuContextMenu.MenuItems.Add(mnuItemNew); mnuContextMenu.MenuItems.Add(mnuItemOpen); PUM wykład 3 Paweł Fiderek

26 PUM wykład 3 Paweł Fiderek
Date Picker Pocket PC Smartphone public void CreateMyDateTimePicker() { // Create a new DateTimePicker control and initialize it. DateTimePicker dateTimePicker1 = new DateTimePicker(); // Set the MinDate and MaxDate. dateTimePicker1.MinDate = new DateTime(1985, 6, 20); dateTimePicker1.MaxDate = DateTime.Today; // Set the CustomFormat string. dateTimePicker1.CustomFormat = "MMMM dd, yyyy - dddd"; dateTimePicker1.Format = DateTimePickerFormat.Custom; //Show the CheckBox and display the control //as an up-down control. dateTimePicker1.ShowCheckBox = true; dateTimePicker1.ShowUpDown = true; } PUM wykład 3 Paweł Fiderek

27 PUM wykład 3 Paweł Fiderek
Hyperlink HyperLink link = (HyperLink) e.Item.FindControl("viewDetails"); PUM wykład 3 Paweł Fiderek

28 PUM wykład 3 Paweł Fiderek
List Box private void button1_Click(object sender, System.EventArgs e) { // Create an instance of the ListBox. ListBox listBox1 = new ListBox(); // Set the size and location of the ListBox. listBox1.Size = new System.Drawing.Size(200, 100); listBox1.Location = new System.Drawing.Point(10,10); // Add the ListBox to the form. this.Controls.Add(listBox1); // Set the ListBox to display items in multiple columns. listBox1.MultiColumn = true; // Set the selection mode to multiple and extended. listBox1.SelectionMode = SelectionMode.MultiExtended; // Shutdown the painting of the ListBox as items are added. listBox1.BeginUpdate(); // Loop through and add 50 items to the ListBox. for (int x = 1; x <= 50; x++) { listBox1.Items.Add("Item " + x.ToString()); } // Allow the ListBox to repaint and display the new items. listBox1.EndUpdate(); // Select three items from the ListBox. listBox1.SetSelected(1, true); listBox1.SetSelected(3, true); listBox1.SetSelected(5, true); // Display the second selected item in the ListBox to the console. System.Diagnostics.Debug.WriteLine(listBox1.SelectedItems[1].ToString()); // Display the index of the first selected item in the ListBox. System.Diagnostics.Debug.WriteLine(listBox1.SelectedIndices[0].ToString()); } PUM wykład 3 Paweł Fiderek

29 PUM wykład 3 Paweł Fiderek
List View ListViewItem listViewItem1 = new ListViewItem(); ListViewSubItem listViewSubItem1 = new ListViewSubItem();   listViewItem1.Text = "Joe"; listViewSubItem1.Text = "123 Somewhere Street";   listViewItem1.SubItems.Add(listViewSubItem1); listView1.Items.Add(listViewItem1); ColumnHeader columnHeader1 = new ColumnHeader(); ColumnHeader columnHeader2 = new ColumnHeader() ; ColumnHeader columnHeader3 = new ColumnHeader();   columnHeader1.Text = "Name"; columnHeader2.Text = "Address"; columnHeader3.Text = "Telephone Number";   listView1.Columns.Add(columnHeader1); listView1.Columns.Add(columnHeader2); listView1.Columns.Add(columnHeader3); listView1.Groups.Add(new ListViewGroup("Friends", HorizontalAlignment.Left)); PUM wykład 3 Paweł Fiderek

30 PUM wykład 3 Paweł Fiderek
Option Button this.groupBox1 = new System.Windows.Forms.GroupBox(); this.radioButton2 = new System.Windows.Forms.RadioButton(); this.radioButton1 = new System.Windows.Forms.RadioButton(); this.getSelectedRB = new System.Windows.Forms.Button(); this.groupBox1.Controls.Add(this.radioButton2); this.groupBox1.Controls.Add(this.radioButton1); this.groupBox1.Controls.Add(this.getSelectedRB); this.groupBox1.Location = new System.Drawing.Point(30, 100); this.groupBox1.Size = new System.Drawing.Size(220, 125); this.groupBox1.Text = "Radio Buttons"; PUM wykład 3 Paweł Fiderek

31 PUM wykład 3 Paweł Fiderek
Progress Bar  this.progressBar1 = new System.Windows.Forms.ProgressBar(); progressBar1.Maximum = 10;             progressBar1.Location = new System.Drawing.Point(8, 312);             progressBar1.Minimum = 0;             progressBar1.TabIndex = 0;             progressBar1.Value = 0; PUM wykład 3 Paweł Fiderek

32 PUM wykład 3 Paweł Fiderek
Scroll Bar hscrollb = new ScrollBar(); hscrollb.Orientation = Orientation.Horizontal; spanel1.Children.Add(hscrollb); vscrollb = new ScrollBar(); vscrollb.Orientation = Orientation.Vertical; vscrollb.HorizontalAlignment = HorizontalAlignment.Left; vscrollb.Width = (20); vscrollb.Height = (80); Canvas.SetLeft(vscrollb, (50)); spanel1.Children.Add(vscrollb); PUM wykład 3 Paweł Fiderek

33 PUM wykład 3 Paweł Fiderek
Slider Slider hslider = new Slider(); hslider.Orientation = Orientation.Horizontal; hslider.AutoToolTipPlacement = AutoToolTipPlacement.TopLeft; hslider.AutoToolTipPrecision = 2; hslider.IsDirectionReversed = true; hslider.Width = 100; hslider.IsMoveToPointEnabled = false; hslider.SelectionStart = 1.1; hslider.SelectionEnd = 3; hslider.IsSelectionRangeEnabled = false; hslider.IsSnapToTickEnabled = false; hslider.TickFrequency = 3; hslider.TickPlacement = TickPlacement.Both; cv1.Children.Add(hslider); <Style x:Key="Triggers" TargetType="{x:Type Slider}"> <Style.Triggers> <Trigger Property="Slider.IsMouseOver" Value="True"> <Setter Property = "Background" Value="Green"/> <Setter Property = "IsSnapToTickEnabled" Value ="True"/> <Setter Property = "TickPlacement" Value ="TopLeft"/> <Setter Property = "TickFrequency" Value ="1"/> </Trigger> </Style.Triggers> </Style> PUM wykład 3 Paweł Fiderek

34 PUM wykład 3 Paweł Fiderek
Tab private void MyTabs() { this.tabControl1 = new TabControl(); // Invokes the TabPage() constructor to create the tabPage1. this.tabPage1 = new System.Windows.Forms.TabPage(); this.tabControl1.Controls.AddRange(new Control[] { this.tabPage1}); this.tabControl1.Location = new Point(25, 25); this.tabControl1.Size = new Size(250, 250); this.ClientSize = new Size(300, 300); this.Controls.AddRange(new Control[] { this.tabControl1}); } PUM wykład 3 Paweł Fiderek

35 PUM wykład 3 Paweł Fiderek
Text Box private void CreateMyMultilineTextBox() { // Create an instance of a TextBox control. TextBox textBox1 = new TextBox(); // Set the Multiline property to true. textBox1.Multiline = true; // Add vertical scroll bars to the TextBox control. textBox1.ScrollBars = ScrollBars.Vertical; // Allow the RETURN key to be entered in the TextBox control. textBox1.AcceptsReturn = true; // Allow the TAB key to be entered in the TextBox control. textBox1.AcceptsTab = true; // Set WordWrap to True to allow text to wrap to the next line. textBox1.WordWrap = true; // Set the default text of the control. textBox1.Text = "Welcome!"; } PUM wykład 3 Paweł Fiderek

36 PUM wykład 3 Paweł Fiderek

37 PUM wykład 3 Paweł Fiderek

38 PUM wykład 3 Paweł Fiderek

39 PUM wykład 3 Paweł Fiderek

40 PUM wykład 3 Paweł Fiderek

41 PUM wykład 3 Paweł Fiderek

42 PUM wykład 3 Paweł Fiderek

43 PUM wykład 3 Paweł Fiderek

44 PUM wykład 3 Paweł Fiderek

45 PUM wykład 3 Paweł Fiderek

46 PUM wykład 3 Paweł Fiderek

47 PUM wykład 3 Paweł Fiderek

48 PUM wykład 3 Paweł Fiderek

49 PUM wykład 3 Paweł Fiderek

50 PUM wykład 3 Paweł Fiderek

51 PUM wykład 3 Paweł Fiderek

52 PUM wykład 3 Paweł Fiderek

53 PUM wykład 3 Paweł Fiderek

54 PUM wykład 3 Paweł Fiderek

55 PUM wykład 3 Paweł Fiderek

56 PUM wykład 3 Paweł Fiderek

57 PUM wykład 3 Paweł Fiderek

58 PUM wykład 3 Paweł Fiderek

59 PUM wykład 3 Paweł Fiderek

60 PUM wykład 3 Paweł Fiderek


Pobierz ppt "Programowanie urządzeń mobilnych"

Podobne prezentacje


Reklamy Google