Windows Forms · Project  Windows Application using System.Drawing;

Slides:



Advertisements
Podobne prezentacje
Introduction to SystemC
Advertisements

Analiza wywołania i przebiegu przerwań w systemie Linux

Java Server Faces Tomasz Nowak.
ALLEGRO PIERWSZA GRA: WYŚCIG
C++ w Objectivity Marcin Michalak s1744. Pomocne pakiety: Data Definition Language (DDL). Standard Template Library (STL). Active Schema.
Wybrane elementy C#, BCL
Technologia .Net Bazy danych część 2..
Java vs C# Michał Prządka Tomasz Nowak
OOPSmalltalk for Wndows- Grafika, Windows1 Grafika w Smalltalku Grafika rastrowa (bit-mapy). Piksel (pixel, picture element) - punkt na ekranie. Mapa bitowa.
GUI Struktury Spotkanie integracyjne Nazwa wydziału: EAIiE Nazwa katedry: Informatyka Miejsce i data prezentacji: Kraków,
Standard Widget Toolkit
Mirosław Ochodek Sponsorzy: JFace Jak jeszcze szybciej tworzyć interfejsy? ECESIS Eclipse Community Education Project An.
Team Building Copyright, 2003 © Jerzy R. Nawrocki Requirements Engineering Lecture.
Programowanie w środowiskach zintegrowanych wykład 1 PSZ Programowanie w Środowiskach Zintegrowanych > Systemy i środowiska zintegrowane > Środowisko zintegrowane.
Łukasz Monkiewicz.
Współprogramy Plan: Motywacja Składnia Scenariusz obiektu współprogramu Przykłady Producent – konsument ( instrukcja attach ) Czytelnik -pisarze ( instukcja.
142 JAVA – sterowanie i wątki public class A20 extends javax.swing.JApplet implements ActionListener { private int licznik = 0; private JTextField t =
Aplikacje sieciowe Obiekty typu Socket. ServerSocket ClientSocket Socket ClientSocket Socket.
Warstwy aplikacji sieciowych
Exact Software Poland Sp z o.o. Adam Sasin AXA TUiR
Język C# Copyright, 2004 © Adam Czajka.
C# Windows Forms Zastosowania Informatyki Wykład 3
C# Windows Forms Zastosowania Informatyki Wykład 4, 5
MS ASP.NET 2005/2006
1 Building Integration System - Training Internal | ST-IST/PRM1 | 02/2008 | © Robert Bosch GmbH All rights reserved, also regarding any disposal,
Obiekty dynamiczne Tworzenie klas 3 MPDI Programowanie obiektowe W4.
Porysujmy trochę czyli Łączenie SQLa, AutoCADa i Delphi
XNA Szybki start Kurs ITA-106 (Grafika i multimedia) – Moduł 1
Realizacja aplikacji internetowych
Czym jest JavaFX? Rich Internet Application
PRZELICZNIK DŁUGOŚCI w programie NetBeans IDE autorzy: Michał Mrozek i Marcin Mrugała 2012.
Krzysztof Manuszewski
Asynchroniczność w Windows 8 Jakub Binkowski. O mnie Jakub Binkowski Lead.NET Developer.
db4o Kacper Skory Marcin Talarek
Czyli jak zrobić prezentację komputerową?
Tajemnice klawiatury.
Informatyka Edytor tekstów Word.
PIO 2_2, Zofia Kruczkiewicz1 Wykład 2 – część druga Iteracyjno-rozwojowy cykl oprogramowania 2.
PIO. Autor -Zofia Kruczkiewicz1 Wykład 1-część druga Wstęp do inżynierii oprogramowania. Cykle rozwoju oprogramowania (część biznesowa aplikacji) iteracyjno-rozwojowy.
Autorzy: Agnieszka Kuraj Natalia Gałuszka Kl. III c.
Tablice.
Formatowanie i modyfikacja dokumentu tekstowego
BUDOWA ARKUSZA KALKULACYJNEGO
Cz.8 Zdarzenia. Refleksja – przypomnienie Event Programowanie zdarzeniowe Do dzieła!
Komputerowe prezentacje
Tworzenie tabel w edytorze Word
Szkoła Podstawowa nr 107 Tworzymy w nim i odczytujemy grafikę w formatach: BMP, JPEG, GIF, TIFF, PNG. Program ten jest standardowo instalowany z systemami.
Warsztaty C# Część 2 Grzegorz Piotrowski Grupa.NET PO
Warsztaty C# Część 3 Grzegorz Piotrowski Grupa.NET PO
A. Jędryczkowski – 2006 ©. Tablica to struktura danych zawierająca zbiór obiektów tego samego typu i odpowiada matematycznemu pojęciu wektora (tablica.
Budowa programu #include /*instrukcje preprocesora */ #include int main(void) { /*podstawowa funkcja programu */ int a=1; /*deklaracja i inicjalizacja.
Narzędzie wspomagające projektowanie aplikacji Proficy iFIX
Temat 5: Elementy meta.
Tworzenie Aplikacji Internetowych dr Wojciech M. Gańcza 4.
Warsztaty użytkowników programu PLANS – Karwia06 Język makropoleceń JMP programu PLANS Część I mgr inż. Tomasz Zdun.
- przykłady.
Instrukcje sterujące: W instrukcjach sterujących podejmowane są decyzje o wykonaniu tych czy innych instrukcji programu. Decyzje te podejmowane są w zależności.
Rozdział 3: Bezpieczeństwo w sieci opartej na systemie Windows 2000.
Magic Janusz ROŻEJ Komtech Sp. z o.o.
Security & Communications Training Academy | Date 2011 © Robert Bosch GmbH reserves all rights even in the event of industrial property rights. We reserve.
TROCHĘ HISTORII Marek Zając PO CO UŻYWAĆ OPENCL? Marek Zając.
Silverlight 4 dla Windows Phone 7
1.
Piotr Czapiewski Wydział Informatyki ZUT.  Extensible Markup Language  Język znaczników  Human-readable and machine-readable  Niezależny od platformy.
Security & Communications Training Academy | Date 2011 © Robert Bosch GmbH reserves all rights even in the event of industrial property rights. We reserve.
Wydział Elektroniki Kierunek: AiR Zaawansowane metody programowania Wykład 6.
Security & Communications Training Academy | Date 2011 © Robert Bosch GmbH reserves all rights even in the event of industrial property rights. We reserve.
Wstęp - Prosta aplikacja internetowa w technologii Java EE 5 Programowanie komponentowe 1.
Wstęp - Prosta aplikacja internetowa w technologii Java EE 5
Zapis prezentacji:

Windows Forms · Project  Windows Application using System.Drawing; ·       zestaw narzędzi wspomagający tworzenie aplikacji okienkowych typu formularz + elementy sterujące ·       Project  Windows Application using System; using System.Drawing; using System.Collections; using System.ComponentModel; using System.Windows.Forms; using System.Data;

Hierarchia klas Object MarshalByRefObject Component Control ScrollableControl ContainerControl Form

·     Object  podstawowa klas bazowa ·     MarshalByRefObject  umożliwia przetwarzanie formularza utworzonego na odległym komputerze poprzez referencję ·    Component  tworzy komponent ( kontener) dla przechowywania obiektów ·    Control  definiuje podstawowe cechy formularza i podstawową obsługę zdarzeń ·    ScrollableControl  umożliwia dodawanie suwaków i przewijanie tekstu ·    ContainerControl  umożliwia dziedziczenie formularzy · Form  składowe opisujące formularz

namespace Empty { public class Form1 : System.Windows.Forms.Form // partial private System.ComponentModel. Containercomponents = null; public Form1() InitializeComponent(); } protected override void Dispose( bool disposing ) { . . . }

private void InitializeComponent() { this.components = new System.ComponentModel.Container(); this.Size = new System.Drawing.Size(300,300); this.Text = ”Form1”; } static void Main() Application.Run(new Form1());

·   Form Designer  dodawanie elementów sterujących ·   Properties  ustalanie parametrów i obsługa zdarzeń // klasa Form1 private System.Windows.Forms.Button Guzik_1; // funkcja InitializeComponent this.Guzik_1 = new System.Windows.Forms.Button(); FirstForm

// Guzik_1 // dla zmienionych parametrów this.Guzik_1.Location = new System.Drawing.Point(128, 104); this.Guzik_1.Name = „Guzik_1”; this.Guzik_1.TabIndex = 0; this.Guzik_1.Text = „Czekam...”; this.Guzik_1.Click += new System.EventHandler(this.OnGuzik); this.Controls.AddRange( new System.Windows.Forms.Control[] {this.Guzik_1}); // funkcja obsługi private void OnGuzik(object sender, System.EventArgs e) { .... } Nowy Guzik

Obsługa myszy · zdarzenia związane z myszką MouseClick MouseDoubleClick MouseDown MouseEnter MouseHover MouseMove MouseUp MouseLeave

private void Form1_MouseDown (object sender, System.Windows.Forms.MouseEventArgs e); { ... } ·       składowe klasy MouseEventArgs Button // left, middle, right Clicks // liczba naciśnięć Delta // liczba obrotów kółka X , Y // współrzędne w momencie // naciśnięcia

Obsługa klawiatury KeyDown KeyPress KyeUp private void OnKey (object sender, System.Windows.Forms.KeyEventArgs e); { ... } ·       składowe klasy KeyEventArgs Alt, Control, Shift, Modifiers KeyCode, KeyData, KeyValue ·   Form1.KeyPreview = true;    

· dla pozycji końcowych zdefiniować funkcje obsługi w oknie Dodawanie menu · Form Designer  wpisać nazwy pozycji menu ·       dla pozycji końcowych zdefiniować funkcje obsługi w oknie Properties ( Events / Click ) i ewentualnie inne parametry ·       dekorowanie pozycji menu  składowe klasy MenuItem Checked, Enabled, ShortCut, ShowShortCut, Text

Pasek stanu ·       dołączany za pomocą Form Designer, może zawierać różne rodzaje informacji ·       składowe klasy StatusStrip : StatusBar ToolStripStatusLabel // teksty ToolStripProgressBar // postęp ToolStripDropDownButton // lista wyboru ToolStripSplitButton // przycisk i lista wyboru

  ·       wyświetlanie podpowiedzi w panelu  obsługa zdarzenia MouseEnter ( np. pozycji menu) private void OnMouseEnter (object sender, System.EventArgs e) { toolStripStatusLabel1.Text = "Kopiowanie."; }

·       wyłączanie podpowiedzi private void OnMouseLeave (object sender, System.EventArgs e) { statusBarPanel1.Text = "."; }

Pasek narzędzi ·       za pomocą Form Designer dołączamy pasek  obiekt ToolStrip ·      można dołączać i edytować poszczególne przyciski narzędzi  ToolStripButton ·       dla przycisków można definiować opisy (Text) i dymki (ToolTipText) ·      obsługa naciśnięcia przcisku  w oknie właściwości ToolStripButton dodać funkcję obsługi zdarzenia Click

Elementy sterujące · kolejność zdarzeń generowanych przy kontaktach z elementem sterującym: Enter  Leave  Validating  Validated ·    gdy CausesValidation == false to zdarzenia Validating i Validated nie są generowane

· Button  przeciągnąć z przybornika, ustalić właściwości i ·       Button  przeciągnąć z przybornika, ustalić właściwości i zdefiniować funkcje obsługi zdarzeń private void Common_Button_Click (object sender, EventArgs e) { Button bb = (Button)sender; textBox1.Text = (string) bb.Tag; }

· TextBox  przeciągnąć z panelu elementów, ustalić właściwości (np ·       TextBox  przeciągnąć z panelu elementów, ustalić właściwości (np. tekst początkowy), dodać obsługę zdarzeń np. TextChanged lub Leave private void OnTextBox1Leave (object sender, System.EventArgs e) { string ss = textBox1.Text; MessageBox.Show(ss); } ·       można utworzyć pole dla wprowadzania hasła ·       można dodać suwaki przewijania ·       maskowanie MaskedTextBox ·      sprawdzanie poprawności 

Przyciski radiowe ·       aby uzyskać 1 z N należy najpierw umieścić GroupBox, a potem wewnątrz same przyciski ·       odczytanie stanu przycisku if ( radioYellow.Checked ) { ... }

Dymki z podpowiedzią ·       przeciągnąć ToolTip z panelu (wyświetli się u dołu poza formularzem) ·       w oknie właściwości danego elementu wstawić tekst dymka np. do pola ToolTip on toolTip1 ·       realizacja (automatyczna) this.toolTip1.SetToolTip (this.radioButton1, "I am blue.");  

Przeciągnij i Upuść Drag & Drop · źródło  obsługa MouseDown private void OnMouseDown(object sender, MouseEventArgs e) { TextBox tt = (TextBox)sender; tt.SelectAll(); tt.DoDragDrop(tt.Text, DragDropEffects.Copy); }

· cel  obsługa DragEnter private void OnDragEnter(object sender, DragEventArgs e) { if (e.Data.GetDataPresent(DataFormats.Text)) e.Effect = DragDropEffects.Copy; else e.Effect = DragDropEffects.None; }

· cel  obsługa DragDrop private void OnDragDrop(object sender, DragEventArgs e) { T2.Text += (string)e.Data.GetData(DataFormats.Text); } DraDro

(System.Clipboard – clipbrd.exe) Schowek (System.Clipboard – clipbrd.exe) Clipboard.SetText(textBox.Text); Clipboard.textBox.Copy(); // selected text Clipboard.SetText((string)listBox.SelectedItem); // if(Clipboard.ContainsText()) textBox2.Text = Clipboard.GetText();

//// obrazy .bmp Bitmap bm = new Bitmap("P2.bmp"); Clipboard.SetImage(bm); // if (Clipboard.ContainsImage()) pictureBox1.Image = Clipboard.GetImage();

///// dźwięki .wav // FileStream fs = new FileStream("notify.wav"); Clipboard.SetAudio(fs); System.Media.SoundPlayer sp = new SoundPlayer(); if (Clipboard.ContainsAudio()) { sp.Stream = Clipboard.GetAudioStream(); sp.Load(); sp.Play(); } Clipboard

Dalsze elementy sterujące NumericUpDown CheckBox // Checked DateTimePicker MonthCalendar ProgressBar ListBox ComboBox // DropDownList WebBrowser // Navigate

CheckedList  TreeView  ListView  TabControl  Chart  TableLayoutPanel FlowLayoutPanel Timer BackGroundWorker  Chart, Prąd3Fazowy

Powiązania ( bindings ) List<string> ll = new List<string>(); string[ ] ts = new string [ 5 ]; // bindingSource1.DataSource = (object)ts; bindingSource2.DataSource = (object)ll; comboBox1.DataSource = (object)bindingSource1; listBox1.DataSource = (object)bindingSource2; bindingSource1.SuspendBinding(); bindingSource1.ResumeBinding(); bindingSource2.SuspendBinding(); bindingSource2.ResumeBinding(); DataBind

Formularze wielojęzykowe using System.Threading; using System.Globalization; using System.Resources; using System.Reflection; ·       umieścić elementy na formie – teksty domyślne ·       ustawić Localizable = true ·       wybrać język ( Language ) ·       wpisać opisy wszystkich elementów ·       dodać funkcję zmiany opisów .....

private void NewLang(string cul) { ComponentResourceManager crm = new ComponentResourceManager(typeof(Form1)); CultureInfo ci = new CultureInfo(cul); foreach (Control cc in this.Controls) { crm.ApplyResources(cc, cc.Name, ci ); if(cc.Controls != null) for (int i = 0; i < cc.Controls.Count; ++i) crm.ApplyResources(cc.Controls[i], cc.Controls[i].Name, ci); }}

private void NewLang(string cul) { CultureInfo ci = new CultureInfo(cul); Thread.CurrentThread.CurrentUICulture = ci; rm = new ResourceManager("namespace.Form1", Assembly.GetExecutingAssembly()); button1.Text = rm.GetString("button1.Text"); label2.Text = rm.GetString("label2.Text"); ............. }

Teksty z zasobów · pobrać: ResourceManager rm2 = MLangTest.Properties.Resources.ResourceManager; lub ·   Add -> New item -> Recources file -> Resource1.resx ·       dodać nazwy tekstów i teksty ResourceManager r1 = Resource1.ResourceManager; textBox1.Text = r1.GetString("J2"); ............ MuLan

Okna dialogowe ·       dialogi standardowe  osadzanie z panelu elementów poza formularzem ·       wyświetlanie i odczytywanie wyniku string str ; if (colorDialog1.ShowDialog() == DialogResult.OK) { str = colorDialog1.Color.ToString(); MessageBox.Show(str); } // Color [A=255,R=139,G=201,B=98] // // filtr dla openFileDialog openFileDialog1.Filter = "Program files|*.cs"; Dial

Dialogi niestandardowe ·       utworzyć nowy formularz Dialog (Aplikacja/Add/Add Windows Form) ·       usunąć elementy ControlBox, MaximizeBox, MinimizeBox (false) ·       dodać przyciski OK i Cancel i ustalić DialogResult  

·       w dowolnej funkcji (np. obsługa menu) dodać Dialog dia = new Dialog(); dia.ShowDialog(); // modalny dia.Show(); // nie modalny ·       do dialogu dodać dowolne elementy sterujące ·       wymiana danych poprzez obiekt dialogu np. dla ListBox CarMakes CarMakes.SelectedIndex = 5; // 0,1,... CarDialog.ShowDialog(); string str = CarMakes.Text; // modyfikator ·       dziedziczenie form (elementy bierne) ( Build  Add Inherited Form ) DzieForm

Środowisko graficzne GDI+ ·       przestrzenie nazw System.Drawing System.Drawing.Drawing2D System.Drawing.Imaging System.Drawing.Printing System.Drawing.Text ·       klasy pomocnicze Point PointF Rectangle RectangleF Size SizeF Region // rectangles + paths

   uzyskiwanie obiektu Graphics - obsługa komunikatu Paint private void OnMyPaint ( object sender, System.Windows.Forms.PaintEventArgs e )‏ { Graphics g = e.Graphics; .... } - z obrazu Graphics g = Graphics.FromImage(pictureBox1.Image); - z uchwytu Graphics g = Graphics.FromHwnd(button1.Handle);

   unieważnianie obszaru klienta Invalidate( ) Invalidate(Rect)‏        określanie koloru tła Graphics g = e.Graphics; e.Clear(Color.Yellow); e.Clear(Color.FromArgb( 128, 255, 0, 0 )); // (10, 200,120) Paint1

 narzędzia graficzne : czcionki pióra pędzle      definiowanie czcionki Font f = new Font("Arial", 12, FontStyleBold | FontStyleUnderline);

  definiowanie pióra Pens.Firebrick // i inne kolory Pen pen1 = new Pen(Color.Red, 5); // solid // styl linii pen1.DashStyle = DashStyle.Dash; // .DashDot, .DashDotDot, .Dot, .Solid // // zakończenia linii pen1.StartCap = LineCap.Flat; pen1.EndCap = LineCap.Square; // .Triangle, .ArrowAnchor, .RoundAnchor ...

       definiowanie pędzla Brushes.Blue // i inne kolory SolidBrush brush1 = new SolidBrush(Color.Red); HatchBrush brush2 = new HatchBrush( HatchStyle, linesColor, backColor); LinearGradientBrush brush3 = new LinearGradientBrush( Rectangle, StartColor, EndColor ); // Angle Paint2

       wyprowadzanie tekstu g.DrawString( string, Font, Brush, RectangleF | PointF, StringFormat ); Font f = new Font( "Tahoma", 40 ); g.DrawString( "Napis", f, Brushes.Red, 50, 50 ); // StringFormat sf = new StringFormat(); sf.FormatFlags = StringFormatFlags.DirectionVertical; g.DrawString("ALFA", f, Brushes.Green, 50, 50, sf );

       składowe klasy Graphics do rysowania (niektóre)‏ DrawLine // Arc, Bezier, // Ellipse, Pie, Rectangle‏ FillEllipse // Pie, Polygon, Rectangle‏

       kolekcja figur GraphicsPath GraphicsPath gp = null; Point[ ] T1 = { point1, point2, point3 }; Point[ ] T2 = { point4, point5, point6 };  // gp = new GraphicsPath(); gp.AddPolygon(T1); gp.AddPolygon(T2); graphics.DrawPath(Pens.Red, gp); Paint3

       przetwarzanie obrazów string file = @"d:\Ob1.bmp"; Bitmap b1 = new Bitmap(file); // odczytywanie pictureBox1.Image = b1; // wyświetlanie // b1.Save(@"d:\Ob2.jpg", // zapisywanie System.Drawing.Imaging.ImageFormat.Jpeg); Picture1

       przetwarzanie pikseli Color px; for (int x = 0; x < bitmap2.Width; ++x) for (int y = 0; y < bitmap2.Height; ++y) { px = bitmap2.GetPixel(x, y);   if ( px ... ) bitmap2.SetPixel(x, y, Color.Red); } Picture2

       przetwarzanie obrazów GDI+ Bitmap bb = new Bitmap(350,200); pictureBox1.Image = bb; Graphics g = Graphics.FromImage(pictureBox1.Image); // draw, fill bb = (Bitmap)pictureBox1.Image; // process Picture3