Sisällysluettelo Johdanto........................................... 1 1 Dot NET............................................ 3 1.1 Microsoft.NET -alusta............................................. 3 1.1.1 Käyttäjämallit............................................... 4 1.1.2 Ohjelmien kehitys.net-alustalla................................ 5 2 Windows-projekti.................................... 9 2.1 Projektin luonti................................................... 9 2.1.1 Microsoft Visual Studio 2010................................... 9 2.1.2 Microsoft Visual C# 2010 Express.............................. 10 2.2 Visual Studio -ohjelman perusikkunat................................ 11 2.3 Ohjelman perusrakenne........................................... 13 2.3.1 WinFirst-ohjelma........................................... 14 2.4 Debug- ja Release-version kääntäminen.............................. 17 2.4.1 Visual Studio -ohjelmisto..................................... 17 2.4.2 Visual Studio -ohjelmiston Express-versio........................ 18 2.5 Projektiasetukset................................................ 19 2.5.1 Application-välilehti......................................... 19 2.5.2 Build-välilehti.............................................. 20 2.5.3 Resources-välilehti.......................................... 21 2.5.4 Settings-välilehti............................................ 23 2.5.4.1 WinSettings-ohjelma................................... 24 2.5.5 Reference Paths -välilehti..................................... 26 2.5.6 Signing-välilehti............................................ 26 2.5.7 Security-välilehti............................................ 27 2.5.8 Publish-välilehti............................................ 27 3 Windows-ohjelmaikkuna............................. 29 3.1 MenuStrip-, ToolStrip- ja StatusStrip-komponentti...................... 30 3.1.1 WinFormBasicElements-ohjelma............................... 37 4 Piirtäminen........................................ 41 4.1 Paint-tapahtuma................................................. 41 4.1.1 WinPaintEvent-ohjelma...................................... 43 4.2 Useampia formeja ja tapahtumankäsittelijöitä.......................... 46 4.2.1 WinSingleHandler-ohjelma.................................... 47 4.2.2 WinChangeHandler-ohjelma................................... 50 4.3 Piirtäminen Paint-tapahtumankäsittelijän ulkopuolella................... 54 www.stickmansoft.com I
4.3.1 WinDrawOutsidePaint-ohjelma................................ 57 4.4 Kynä, fontti ja sivellin............................................ 60 4.4.1 WinPenFontBrush-ohjelma................................... 66 5 Näppäimistö....................................... 71 5.1 Näppäimistön eventit............................................. 71 5.1.1 WinKeyboard-ohjelma....................................... 75 6 Hiiri...............................................79 6.1 Hiiren eventit................................................... 80 6.1.1 WinMouse-ohjelma......................................... 84 6.2 Hiiren kursori.................................................. 88 6.3 Capture....................................................... 91 7 Dialogit............................................93 7.1 Modaalinen ja modaaliton dialogi................................... 94 7.1.1 WinDialog-ohjelma......................................... 94 7.2 Valmiit dialogiluokat............................................. 97 7.2.1 WinCommonDialogs-ohjelma................................. 99 7.3 Paluuarvo dialogilta............................................. 102 7.3.1 WinDialogResult-ohjelma................................... 103 7.4 Datan siirto dialogista eventin avulla............................... 106 7.4.1 WinDialogEvent-ohjelma.................................... 107 8 Tiedostojen käsittely................................111 8.1 File-luokka.................................................... 112 8.1.1 WinFileInformation-ohjelma................................. 115 8.2 FileInfo-luokka................................................ 118 8.3 Stream-, Text- ja Binary-luokat.................................... 119 8.3.1 FileStream-luokka......................................... 121 8.3.1.1 Asynkroninen tiedoston luku ja kirjoitus.................. 123 8.3.1.1.1 WinAsyncReadWrite-ohjelma.................. 125 8.3.2 StreamReader- ja StreamWriter-luokka......................... 132 8.3.2.1 WinStreamRW-ohjelma............................... 134 9 Kuvien käsittely....................................141 9.1 Formin taustakuva ja formin komponenteissa olevat kuvat.............. 142 9.2 Bitmap-luokka................................................. 143 9.2.1 Kuvan piirtäminen näytölle.................................. 147 9.2.2 Kuvan lataaminen tiedostosta................................. 148 9.2.2.1 WinLoadImage-ohjelma............................... 149 9.2.3 Kuvan lataaminen.exe-tiedostosta............................. 151 II C# Windows-ohjelmointi
9.2.3.1 WinLoadImageFromEmbeddedResource-ohjelma........... 152 9.2.4 Kuvan luonti kuvakkeesta ja päinvastoin........................ 155 9.2.4.1 WinBitmapIcon-ohjelma............................... 156 9.2.5 Läpinäkyvä kuva........................................... 161 9.2.5.1 WinTransparentImage-ohjelma.......................... 162 9.2.6 Kuvan tallentaminen haluttuun kuvaformaattiin................... 165 9.2.6.1 WinImageFormat-ohjelma............................. 166 9.3 Kuvan muuttaminen tavuiksi ja päinvastoin.......................... 171 10 Hauskoja ominaisuuksia........................... 173 10.1 Opacity-ominaisuus........................................... 173 10.2 TransparencyKey-ominaisuus................................... 174 10.2.1 WinVeryFunny-ohjelma................................. 174 10.2.2 WinNotRectangleForm-ohjelma........................... 177 10.2.3 WinAnalogClock-ohjelma................................ 180 11 MDI-ohjelma..................................... 191 11.1 MDI-ohjelman toteutus........................................ 191 11.1.1 WinMdiPictureReader-ohjelma............................ 194 12 Äänitiedostot..................................... 199 12.1 Wav-tiedostojen soittaminen.................................... 199 12.1.1 SystemSound-luokka.................................... 199 12.1.2 SoundPlayer-luokka..................................... 200 12.1.3 WinWavPlayer-ohjelma.................................. 203 13 Leikepöytä....................................... 209 13.1 Clipboard-luokka............................................. 210 13.1.1 WinClipboard-ohjelma................................... 215 13.2 DataObject-luokka........................................... 218 13.2.1 WinMultipleClipboardFormats-ohjelma..................... 219 14 Raahaa ja pudota toiminnot........................ 225 14.1 Raahaa ja pudota toimintojen käyttö.............................. 225 14.1.1 WinDragAndDrop-ohjelma............................... 227 15 Tulostaminen.................................... 235 15.1 Dokumentin tulostaminen...................................... 235 15.1.1 WinPrintDocument-ohjelma.............................. 239 15.2 Tulostimen käyttäminen piirtopintana............................ 244 15.2.1 WinPrintPicture-ohjelma................................. 245 www.stickmansoft.com III
16 Oma luokkakirjasto............................... 251 16.1 Stickman-luokkakirjasto....................................... 251 16.1.1 WinStickmanDemo-ohjelma.............................. 258 17 Interopservices-palvelu............................ 263 17.1 Ulkopuolisten dll-kirjastojen käyttö.............................. 263 17.1.1 Win32ApiInteropservices-ohjelma......................... 264 17.1.2 WinOwnDllInteropservices-ohjelma........................ 267 18 Web............................................ 271 18.1 Internetsivun avaus........................................... 271 18.1.1 WinOpenWebPage-ohjelma.............................. 272 18.2 Tietojen luku www-sivulta ja internet-hakemistosta................. 273 18.2.1 WinReadDataFromWebPage-ohjelma...................... 275 18.2.2 WinReadDataFromWebDirectory-ohjelma................... 278 18.3 Web-selain................................................. 282 18.3.1 WebBrowser-luokka.................................... 283 18.3.1.1 WinJehuWebBrowser-ohjelma..................... 285 18.4 WebClient-luokka........................................... 292 18.4.1 Datan lataaminen....................................... 293 18.4.1.1 WinWebClientLoad-ohjelma...................... 293 18.4.2 Datan lähettäminen..................................... 297 18.4.2.1 WinWebClientSend-ohjelma....................... 299 19 Soketti.......................................... 303 19.1 TCP/IP- ja UDP/IP-protokolla.................................. 304 19.2 Socket-luokka............................................... 307 19.2.1 Asiakas/Palvelin-rakenne................................ 307 19.2.1.1 WinTcpIp-järjestelmä............................. 310 19.2.1.1.1 Server-ohjelma......................... 310 19.2.1.1.2 Client-ohjelma.......................... 314 19.2.2 Lähettäjä/Vastaanottaja-rakenne........................... 318 19.2.2.1 WinUdpIp-järjestelmä............................ 321 19.2.2.1.1 CameraSender-ohjelma................... 321 19.2.2.1.2 CameraTerminal-ohjelma................. 327 20 Sarjaliikenne..................................... 331 20.1 Sarjaliikenteen perusteet....................................... 331 20.1.1 Sarjaliikenneprotokolla ja OSI-malli........................ 331 20.1.2 Sarjaliikenteen liittimet.................................. 332 20.1.2.1 9-napainen liitin................................. 333 20.1.2.2 25-napainen liitin................................ 334 20.1.2.3 Laitteiden yleisiä kytkentätapoja.................... 335 IV C# Windows-ohjelmointi
20.1.3 USB-liitin............................................ 337 20.1.4 FireWire-liitin......................................... 339 20.2 SerialPort-luokka............................................. 340 20.2.1 Sarjaportin alustaminen.................................. 340 20.2.2 Tiedonsiirto........................................... 343 20.2.3 Muita sarjaportin asetuksia............................... 346 20.3 USB RS232 -adapteri......................................... 347 20.3.1 WinUsbRs232Adapter-ohjelma............................ 348 20.4 USB GSM -modeemi......................................... 356 20.4.1 WinUsbGsmModem-ohjelma............................. 357 21 Tietokannat...................................... 367 21.1 ADO.NET.................................................. 367 21.2 Microsoft Access -tietokanta.................................... 371 21.2.1 WinAccessDatabase-ohjelma.............................. 371 21.3 Microsoft SQL Server -tietokanta................................ 377 21.3.1 Tietokannan luonti...................................... 377 21.3.2 Taulujen lisääminen tietokantaan........................... 378 21.3.3 Tietokannan tietojen syöttäminen.......................... 380 21.3.4 Tietokannan tietojen käsittely............................. 381 21.3.4.1 DataGridView-komponentti........................ 384 21.3.4.2 Data Source -komponentti......................... 386 21.3.4.3 BindingNavigator-komponentti..................... 391 21.3.4.4 Tietojen liittäminen formin komponentteihin.......... 392 21.3.4.5 Tietokannan tietojen päivittäminen.................. 404 21.4 Microsoft SQL Server -tietokannan ohjelmallinen käsittely........... 409 21.4.1 WinSqlDatabase-ohjelma................................. 409 21.4.2 WinSqlDatabaseExtension-ohjelma......................... 417 Liite A: Toolbox-ikkunan komponentit................. 425 A - 1 Toolbox-ikkuna.............................................. 427 A - 1.1 Button, Label ja TextBox................................ 430 A - 1.1.1 WinButtonLabelAndTextBox-ohjelma.............. 430 A - 1.2 ListBox ja ComboBox.................................. 431 A - 1.3 CheckBox ja ComboBox................................ 432 A - 1.4 GroupBox............................................ 433 A - 1.5 PictureBox............................................ 434 A - 1.6 Panel................................................ 434 A - 1.7 ContextMenuStrip...................................... 435 A - 1.8 NotifyIcon............................................ 437 A - 1.8.1 WinNotifyIcon-ohjelma......................... 438 A - 1.9 NumericUpDown ja DomainUpDown...................... 440 A - 1.10 FolderBrowserDialog.................................. 441 A - 1.11 TabControl.......................................... 442 www.stickmansoft.com V
A - 1.12 RichTextBox........................................ 443 A - 1.13 CheckedListBox...................................... 443 A - 1.14 ProgressBar......................................... 444 A - 1.15 VScrollBar ja HScrollBar.............................. 444 Liite B: Laajempia esimerkkiohjelmia.................. 447 B - 1 Windows Client/Server -viestijärjestelmä......................... 449 B - 1.1 WinServer-ohjelma.................................... 450 B - 1.2 WinClient-ohjelma.................................... 459 B - 2 Windows Chess -pelijärjestelmä................................ 467 B - 2.1 WinChessServer-ohjelma............................... 467 B - 2.2 WinChess-ohjelma.................................... 474 B - 3 Windows Camera -valvontajärjestelmä........................... 491 B - 3.1 WinCameraServer-ohjelma.............................. 492 B - 3.2 WinCameraTerminal-ohjelma............................ 510 B - 3.3 MobiCameraTerminal-ohjelma........................... 523 Liite C: Näppäimistön näppäinkoodit................... 537 C - 1 Näppäinkoodit.............................................. 539 C - 1.1 Kirjaimet............................................. 539 C - 1.2 Numerot............................................. 539 C - 1.3 Funktionäppäimet...................................... 540 C - 1.4 Erillinen numeronäppäimistö............................. 540 C - 1.5 Kontrollinapit......................................... 541 C - 1.6 Vaihtonapit........................................... 542 C - 1.7 Microsoftin napit...................................... 542 C - 1.8 Muita ohjausnappeja.................................... 542 C - 1.9 Erikoisnapit.......................................... 543 C - 1.10 Hiiren napit.......................................... 543 C - 1.11 Symbolit............................................ 543 C - 1.12 Selain ja mediasoitin.................................. 544 C - 1.13 IME (Input Method Editor)............................. 544 C - 1.14 Vaihtonappien bittimaskit.............................. 545 C - 1.15 KeyCode ja Modifiers bittimaskit........................ 545 Liite D: Kirjan esimerkkiohjelmat..................... 547 D - 1 Esimerkkiohjelmat........................................... 549 Liite E: Hakemisto.................................. 551 E - 1 Hakusanat.................................................. 553 VI C# Windows-ohjelmointi