Windows alkalmazások készítése. A Windows rendszerben a felhasználó hozzászokott a menü, az eszköztár és a többalakos programok használatához.



Hasonló dokumentumok
A fájlkezelés alapjai (titkosítás Caesar kóddal)

Adabáziselérés ODBC-n keresztül utasításokkal C#-ban

Online naptár használata

munkafüzet open eseményéhez

DKÜ ZRT. A Portál rendszer felületének általános bemutatása. Felhasználói útmutató. Támogatott böngészők. Felületek felépítése. Információs kártyák

Mappák megosztása a GroupWise-ban

Objektumok és osztályok. Az objektumorientált programozás alapjai. Rajzolás tollal, festés ecsettel. A koordinátarendszer

Órarendkészítő szoftver

ClicXoft programtálca Leírás

Dokumentum létrehozása/módosítása a portálon:

Johanyák Zsolt Csaba: Ugráló gomb oktatási segédlet Copyright 2008 Johanyák Zsolt Csaba

Képek és grafikák használata

VARIO Face 2.0 Felhasználói kézikönyv

Private Sub OK_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OK.Click Dim tipp As Integer

1.A. feladat: Programablakok

Word V. tabulátortípus meg nem jelenik: Tabulátor - balra, Tabulátor - jobbra,

A webáruház kezdőlapján háromféle diavetítés beállítására van lehetőség:

Alapvető beállítások elvégzése Normál nézet

Egyéni párbeszédpanel Excelben

Műveletek makrókkal. Makró futtatása párbeszédpanelről. A Színezés makró futtatása a Makró párbeszédpanelről

A számítógép beállításainak megváltoztatása

Microsoft Office PowerPoint 2007 fájlműveletei

Bizonylatok felvitele mindig a gazdasági eseménnyel kezdődik, majd ezután attól függően jelennek meg dinamikusan a további adatmezők.

Objektumorientált programozás Pál László. Sapientia EMTE, Csíkszereda, 2014/2015

A Vonallánc készlet parancsai lehetővé teszik vonalláncok és sokszögek rajzolását.

A fizetendő összegből a 35 év fölötti tulajdonos 20 % kedvezményt kap.

Választó lekérdezés létrehozása

Egyszerűbb a Google keresőbe beírni a Sharepoint Designer 2007 letöltés kulcsszavakat és az első találat erre a címre mutat.

Johanyák Zsolt Csaba: Grafikus felület programozása. Copyright 2008 Johanyák Zsolt Csaba

Dokumentáció. IT Worx. Web eszközök Hír box. 1. Első lépések

Kézikönyv. Szelekciós jegyzék létrehozása

Windows 7. Szolgáltatás aktiválása

Diagram létrehozása. 1. ábra Minta a diagramkészítéshez

A Novitax ügyviteli programrendszer első telepítése

DebitTray program Leírás

Vizuális és eseményvezérelt programozás , II. félév BMF NIK

Felhasználói dokumentáció. a TávTagTár programhoz. Készítette: Nyíri Gábor, hdd@nc-studio.com GDF Abakusz regisztrációs kód: GDFAba43

Tartalom jegyzék 1 BEVEZETŐ SZOFTVER ÉS HARDVER KÖVETELMÉNYEK 2 2 TELEPÍTÉS 2 3 KEZELÉS 5

Ismerkedés az új felülettel

ContractTray program Leírás

kommunikáció Megoldások

Access adatbázis elérése OLE DB-n keresztül

Lapműveletek. Indítsuk el az Excel programot és töröljük ki a Munka1 nevű munkalapot!

1. kép. A Stílus beállítása; új színskála megadása.

CMS videó megjelenítő szoftver használata

Oktatás. WiFi hálózati kapcsolat beállítása Windows XP és Windows 7-es számítógépeken. SZTE Egyetemi Számítóközpont

Objektumorientált programozás Pál László. Sapientia EMTE, Csíkszereda, 2014/2015

AÁ OK sablon. Tartalomjegyzék. Használati útmutató

TABULÁTOROK TÁBLÁZATOK KÉSZÍTÉSE. A táblázatok készítésének lehetőségei:

Segédanyag a WORD használatához

A gyakorlat során az alábbi ábrán látható négy entitáshoz kapcsolódó adatbevitelt fogjuk megoldani.

AZ N-WARE KFT. ÁLTAL ELEKTRONIKUSAN ALÁÍRT PDF DOKUMENTUMOK HITELESSÉGÉNEK ELLENŐRZÉSE VERZIÓ SZÁM: 1.3 KELT:

A LOGO MOTION TANÍTÁSA

Outlook Express használata

I-SZÁMLA KFT. VEVŐI FELHASZNÁLÓI FIÓK HASZNÁLATI ÚTMUTATÓ

Thermo1 Graph. Felhasználói segédlet

Programozási technológia

A Web Services protokoll használata hálózati szkennelésre (Windows Vista SP2 vagy újabb verzió, valamint Windows 7 és Windows 8 esetén)

Képek és grafikák. A Beszúrás/Kép parancsot választva beszúrhatunk képet ClipArt gyűjteményből, vagy fájlból. 1. ábra Kép beszúrása

PDF. Tartalomjegyzék 1/21

VarioFace dokumenta cio

Pénzintézetek jelentése a pénzforgalmi jelzőszám változásáról

A nyomtatókkal kapcsolatos beállításokat a Vezérlőpulton, a Nyomtatók mappában végezhetjük el. Nyomtató telepítését a Nyomtató hozzáadása ikonra

SEGÉDLET ADATKEZELÉS MS EXCEL-BEN. Tároljuk az adatokat Excel munkalapon. Megjegyzés: A feladatokat MS Office Excel ban oldottuk meg.

VISUAL BASIC ALAPISMERETEK

ServiceTray program Leírás

Microsec Zrt. által kibocsátott elektronikus aláírás telepítése Windows 7 (x86/x64) Internet Explorer 9 (32 bites) böngészőbe

5.6.3 Laborgyakorlat: Windows rendszerleíró adatbázis biztonsági mentése és visszaállítása

Vihar 2.0 rendszer Felhasználói kézikönyv

HF-DVR H.264 Hálózati Rögzítő. Felhasználói kézikönyv

QGIS szerkesztések ( verzió) Összeállította: dr. Siki Zoltán verzióra aktualizálta: Jáky András

Diagramok/grafikonok használata a 2003-as verzióban

A Google űrlap (form) használata

Win-Tax évi ös verzió

A Microsoft Publisher 2013 külsőre kicsit más, mint elődei, ezért ezzel az útmutatóval szeretnénk megkönnyíteni a program megismerését.

Hiteles Elektronikus Postafiók

Hozzáférési szintek és Időzónák használata

Óranyilvántartás (NEPTUN)

Hogyan rögzítsünk bejövő számlát?

Importálás. más típusú (pl:.imp,.xml,.xkr,.xcz) állomány beimportálása a nyomtatványkitöltő programba

Bevezetés a QGIS program használatába Összeálította dr. Siki Zoltán

TvNetTel Internet Kapcsolat Beállítása

CÍMLISTA HASZNÁLATA. Címlista alapok

Felhasználói leírás a DimNAV Server segédprogramhoz ( )

2. ALKALOM. Bekezdés Elválasztás Tabulátor Vezérlıkarakterek Beállítás Oldalbeállítás BEKEZDÉS

TÁJÉKOZTATÓ A CCN V VERZIÓHOZ Változások a V verzió kiadása után

Közoktatási Statisztika Tájékoztató 2012/2013. Használati útmutató

Szilipet programok telepítése Hálózatos (kliens/szerver) telepítés Windows 7 operációs rendszer alatt

1. Tesztlap: Programablakok

Egzinet Partner Portál

Táblázatkezelés, Diagramkészítés. Egyéb műveletek

AZ N-WARE KFT. ÁLTAL ELEKTRONIKUSAN ALÁÍRT PDF DOKUMENTUMOK HITELESSÉGÉNEK ELLENŐRZÉSE VERZIÓ SZÁM: 1.1 KELT:

Makrók használata az Excelben - Makróhibák kezelése, biztonságos jelszavak generálása

CADcat. Bevezetés a program főbb funkcióiba

Duál Reklám weboldal Adminisztrátor kézikönyv

Excel III. Haladó ismeretek

Hozzunk létre két rekordot a táblában, majd véglegesítsünk (commit):

EDInet Connector telepítési segédlet

KARAKTERFELISMERÉS AZ EVASYS-BEN

Hogyan készítsünk Colorbox-os képgalériát Drupal 7-ben?

Átírás:

Windows alkalmazások készítése A Windows rendszerben a felhasználó hozzászokott a menü, az eszköztár és a többalakos programok használatához. Első példánkban egy egyszerű képnéző programot készítünk, melyben megismerkedünk a menü, az eszköztár és a saját párbeszédpanel készítésével Menü készítése Programunk szolgáltatásai A menürendszeren át egy program valamennyi szolgáltatása elérhető. Esetünkben a program három menüt tartalmaz. A Fájl menü a kép megnyitására, mentésére és a program bezárására szolgál. A Szerkesztés menü segítségével a képet tükrözhetjük vízszintesen vagy függőlegesen, illetve adott szöggel elforgathatjuk. Végül a Kép menü egyetlen pontjával kiválaszthatjuk, hogy a kép betöltse-e a rendelkezésére álló területet. A Szerkesztés menü A menüpontok kiválasztását sokféle szolgáltatás is támogatja. Ilyen a gyorsbillentyű vagy hot key (ábrákon a Ctrl+Shift+F), vagy az aláhúzott betű. Ez utóbbi az Alt gomb lenyomása után jelenik meg, és az adott menüt vagy menüpontot az aláhúzott betű lenyomásával választhatjuk ki. Programunk készítéséhez hozzunk létre egy új Windows alkalmazást! A programablakot nevezzük el frmpic-nek (erre a későbbiekben szükségünk lesz), majd írjuk be a címsorába a Képnéző szöveget. Menü készítése A Visual Basic alapvetően kétféle menü készítését támogatja: az ablak tetején lévő legördülő menüt (MenuStrip), és a jobb egérgomb hatására felbukkanó környezetérzékeny menüt (ContextMenuStrip). Ismerkedjük meg a legördülő menü (vagy egyszerűen menü) készítésével! A menü elhelyezéséhez válasszuk az eszközkészlet Menü vezérlőjét, és kattintsunk a tervezés alatt álló űrlapunkra. Mivel a menüt az űrlapon a rendszer helyezi el, ezért ikonja a képernyő

aljára kerül, miközben az űrlapon megjelenik a főmenü leendő helyén a Type Here felirat. Elvileg az űrlapra több főmenüt is elhelyezhetnénk, erre azonban ritkán van szükség, így ezúttal a főmenü jelenlegi nevét ( MenuStrip1) nem is módosítjuk. Az egyes menüpontok tulajdonságait azonban már tervezés közben érdemes beállítani, ezért szögezzük ki a tulajdonság ablakot. Írjuk a Type Here mezőbe a &Fájl szöveget! Az & jel arra utal, hogy a mögötte lévő betű lesz aláhúzva. (Azonos betűvel kezdődő menüpontok esetén a programozó kénytelen egy belső betűt választani. A Word 2003-ban pl. a Formátum menü az Alt+T kombinációval érhető el: Formá&tum.) A menüpontnak feltétlenül olyan nevet adjuk, amely alapján a programkódból könnyen be tudjuk azonosítani: pl. mnufájl. Ha készen vagyunk, lépjük az alatta lévő Type Here mezőre, és írjuk be a Meg&nyitás szöveget, a menüpont neve pedig legyen célszerűen az elérési útja: mnufájlmegnyitás. A hosszú nevek ne zavarjanak, hiszen nem beírni kell őket a programkódba, hanem kiválasztani. A menüponthoz gyorsbillentyűt is rendelhetünk, ez a menüpont felirata után jelenik meg. A gyorsbillentyű a ShortcutKeys listából választhatjuk ki. Célszerű a felhasználó által megszokott lehetőséget, ezúttal a Ctrl+O kombinációt használni. A gyorsbillentyű megjelenítését a ShowShortcut tulajdonság False-ra állításával tilthatjuk le. &Fálj &Szerkesztés &Kép Meg&nyitás Menté&s Be&zárás &Vízszintes tükrözés &Függőleges tükrözés &Elforgatás &Nyújtás mnufájl mnufájlmegnyitás mnufájlmentés mnufájlbezárás mnuszerkesztés mnuszerkesztésvízszintes mnuszerkesztésfüggőleges mnuszerkesztéselforgatás mnukép mnuképnyújtás Az ábrán programunk menüszerkezetét látjuk. Hozzuk létre őket önállóan! Menüelválasztó A menük kezelésénél gyakran van szükségünk menüelválasztóra. Ez egy vízszintes vonal, amely lehetővé teszi a menüpontok csoportosítását. A menüelválasztó tulajdonképpen egy

önálló menüpont, melynek Text tulajdonsága egy kötőjel, vagyis ezt kell a Type Here-hez beírni. A menüelválasztót is bár kódot ritkán rendelnek hozzá érdemes elnevezni, hogy a későbbiek során könnyen be lehessen azonosítani a menürendszerben. Sokszor egy X-szel jelölik: mnufájlx. Menüpont jelölése A menüpont neve szürke sáv ténylegesen egy jelölőnégyzetet tartalmaz. Ezt a jelölőnégyzetnél megismert tulajdonságokkal állíthatjuk be, attól eltérően azonban értéke nem változik rákattintásra! Példánkban a képet egy képdobozban fogjuk megjeleníteni. Mint az Egyszerű Windows alkalmazások készítése c. fejezetben láttuk, ilyenkor a kép elhelyezésére több lehetőségünk is van. Esetünkben a Kép menü Nyújtás menüpontja fogja beállítani azt, hogy a kép 1:1 méretben jelenjen-e meg, vagy felvegye a képdoboz méretét. Első esetben lehet, hogy a kép nem tölti ki a dobozt, második esetben pedig torzulhat. Azt, hogy a kép nyújtva jelenik meg, vagyis kitölti a képdobozt, a Nyújtás menüpont előtti jelölőnégyzet fogja jelezni. A menüpont Checked tulajdonságának kezdeti állapotát a tulajdonság ablakban állíthatjuk be, ám később, amikor a felhasználó rákattint, már programkódból kell módosítanunk a menüpontot. A többi vezérlőhöz hasonlóan, kattintsunk kettőt a menüpontra, hogy megjelenjen az mnuképnyújtás_click eseménykezelő eljárás, ahol a menüpont Checked tulajdonságát egy elágazással módosíthatjuk: Private Sub mnuképnyújtás_click(byval sender As System.Object, ByVal e As System.EventArgs) Handles mnuképnyújtás.click If mnuképnyújtás.checked = False Then mnuképnyújtás.checked = True Else mnuképnyújtás.checked = False A menüpontok fontosabb tulajdonságai Tulajdonság Checked CheckSate DisplayStyle TextImageRelation Image Leírás A menüpont előtti jelölőnégyzet állapota. A menüpont megjelenését adja meg: csak szöveg/ csak kép/ mindkettő A kép és a szöveg egymáshoz viszonyított helyzete. A menüponthoz tartozó kép megadása.

Text ImageScaling TextDirection ShortcutKeys ShowShortcutKeys ShortcutKeysDiplayString ToolTip AutoToolTip A menüponthoz tartozó szöveg megadása. A kép átméretezve vagy teljes méretben jelenjen-e meg. A szöveg vízszintesen vagy függőlegesen jelenjen-e meg. A menüponthoz tartozó gyorsbillentyű kiválasztása. Megjelenjen-e a gyorsbillentyű a menüpont mellett. A gyorsbillentyű helyére ez a szöveg kerül. Megadja a gyorstipp szövegét, ha a menüpontra mutatunk az egérrel. Ha értéke igaz, akkor a menüponthoz tartozó gyorstipp a menüpont felirata lesz. Az eszköztár és a képdoboz beillesztése Az eszköztár segítségével a menürendszer menüpontjai gyorsabban érhetőek el. Ennek megfelelően úgy működik, hogy az elemeihez tartozó kód lényegében csak meghívja a megfelelő menüpontot. Ahhoz, hogy a képernyőt később kényelmesen tudjuk felosztani, már most helyezzünk el a szokásos módon egy Eszköztár (ToopStrip) vezérlőt. Az eszköztár automatikusan az űrlap tetején, a rendes helyén jelenik meg. Az eszköztár alatti területet teljes egészében a képre szánjuk, melyet egy képdobozban fogunk megjeleníteni. Szúrjunk be tehát erre a területre egy képdobozt, és nevezzük át pb1-re, hogy később könnyebben beírhassuk a nevét. Szeretnénk, ha a képdoboz teljes egészében betöltené az űrlap eszköztár alatti részét, és ez akkor is így maradna, amikor a felhasználó az űrlapot átméretezi. Ezt a Dock tulajdonság Fill beállításával tehetjük meg. A Dock tulajdonsággal ugyanis egy vezérlő hozzáragasztható az űrlap valamelyik oldalához, vagy kitölthető vele az űrlap szabadon lévő része. A fájl menü menüpontjai A kép megnyitásához és mentéséhez a korábban már megismert OpenFileDialog és a SaveFileDialog vezérlőket használhatjuk. Vegyünk fel például az űrlapra egy OpenFileDialog vezérlőt ofd néven, és kattintsunk kettőt a Megnyitás menüpontra. Eddigi ismereteink alapján a menüponthoz a következő kódot rendelhetjük:

Private Sub mnufájlmegnyitás_click(byval sender As System.Object, ByVal e As System.EventArgs) Handles mnufájlmegnyitás.click Try If ofd.showdialog = Windows.Forms.DialogResult.OK Then pb1.image = Image.FromFile(ofd.FileName) Catch ex As Exception End Try MsgBox("A fájl megnyitása nem sikerültű") A Mentés menüpontot hasonlóan készíthetjük el egy SaveFileDialog segítségével. Fájlműveletek közben könnyen generálhatnak kivételek, ezért mindig érdemes Try szerkezettel védeni a program futását. Feladatok: 1) Állítsuk be az OpenFileDialog egyes tulajdonságait (pl. Filter) úgy, hogy megjelenése felhasználóbarát legyen! 2) Mentés Készítsük el a mentés menüpontot! A menüpont tegye lehetővé a kép mentését más néven SaveFileDialog felhasználásával! Segítség: a pb1 képdobozban lévő képet pb1.image.save( C:\csumi.jpg) utasítással menthetjük a C:\csumi.jpg nevű fájlba.) Műveletek a képpel. Saját párbeszédpanel készítése A kép nyújtása A Kép menü segítségével a képdoboz érhető el. Ebben a menüben egyetlen pontot helyeztünk el, a Nyújtást. Ha a Nyújtás menüpontot bekapcsoljuk, akkor a kép teljesen kitölti a képdobozt. Fontos, hogy a kép ténylegesen nem változik, ez a beállítás csupán a megjelenítésre, azaz a képdobozra vonatkozik. Ebben a menüpontban pillanatnyilag egy elágazás van. Mint egy korábbi példában láttuk, a képdoboz SizeMode tulajdonsága határozza meg a kép méretezését. Alapértelmezés szerint a képdoboz bal felső sarkában van a kép bal felső sarka (Normal), míg a nyújtás a StretchImage érték hatására következik be. Ez a beállítás a kód beírása közben listából választható ki: Private Sub mnuképnyújtás_click(byval sender As System.Object, ByVal e As System.EventArgs) Handles mnuképnyújtás.click If mnuképnyújtás.checked = False Then mnuképnyújtás.checked = True pb1.sizemode = PictureBoxSizeMode.StretchImage

Else mnuképnyújtás.checked = False pb1.sizemode = PictureBoxSizeMode.Normal A kép tükrözése A pb1 képdobozban lévő képet a pb1.image objektum azonosítja, így a pb1.image metódusaival módosíthatjuk. Például a képet a RotateFlip metódussal tükrözhetjük vagy forgathatjuk; a kívánt lehetőséget egyszerűen ki kell választanunk egy listából. Ennek megfelelően a Szerkesztés menü első két menüpontja a következő: Private Sub mnuszerkesztésvízszintes_click(byval sender As System.Object, ByVal e As System.EventArgs) Handles mnuszerkesztésvízszintes.click pb1.image.rotateflip(rotatefliptype.rotatenoneflipx) pb1.refresh() Private Sub mnuszerkesztésfüggőleges_click(byval sender As System.Object, ByVal e As System.EventArgs) Handles mnuszerkesztésfüggőleges.click pb1.image.rotateflip(rotatefliptype.rotatenoneflipy) pb1.refresh() A metódus képet (a memóriában) transzformálja ugyan, ám a képdobozt nem változtatja meg. A kép módosulását a képdoboz csak akkor követi, ha valami miatt frissíteni kell a képernyőt, pl. a felhasználó átméretezi az ablakot. Ha nem akarjuk megvárni, amíg a rendszer magától frissít, akkor a frissítést nekünk kell kezdeményeznünk a képdoboz Refresh metódusával. Új űrlap készítése a forgatáshoz Felhasználóbarát megoldás, ha az elforgatás szögét a felhasználó egy dialógusdobozban egy numerikus léptetővel viheti be, és közben egy előnézeti ábrán nyomon követheti az eredményt is. Programozási szempontból új problémát a két űrlap közötti adatkapcsolat fog jelenteni.

Az új űrlap hozzáadásához kattintsunk a Project menü Add Windows Form menüpontjára, és itt válasszuk a Windows Form lehetőséget. Az Open gombra kattintás után egy új abblakot kapunk, Form2 néven. Legyen az ablak új neve frmrot, majd állítsuk be a következő tulajdonságokat, hogy a megjelenő ablak a Windowsban megszokott párbeszédpanelnek megfelelően jelenjen meg. FormBorderStyle = FixedDialog (a párbeszédablak kerete) ControlBox = False (nem lesznek ablakikonok) ShowInTaskbar = False (nem jelenik meg a tálcán) Helyezzük el rajta a vezérlőket az ábra szerint. Új elem a numerikus léptető, melyet az eszközkészlet NumericUpDown ikonjával illeszthetünk be. A léptető Minimális és Maximális értékét a Minimum és a Maximum, lépésközét pedig a Increment tulajdonság adja meg. nup NumericUpDown Maximum =360 Increment = 90 pb2 PictureBox BorderStyle = Fixed3D SizeMode = StretchImage OK Button DialogResult = OK Mégse Button DialogResult = Cancel

A párbeszédpanelből a felhasználó kétféle módon léphet ki: az OK gombbal elfogadja a módosításokat, a Mégse gombbal nem. Hogy melyiket választotta, az a meghívó frmpic főűrlapról a párbeszédpanel DialogResult tulajdonságaként fog látszani. Állítsuk ehhez a Mégse gomb DialogResult tulajdonságát Cancelre! Ez azt jelenti, hogy ha a felhasználó rákattint, akkor a párbeszédpanel DialogResult tulajdonsága automatikusan Cancelre áll, és az ablak becsukódik. Az Ok gomb esetében értelemszerűen a DialogResult tulajdonságot OK-ra kell állítani. A párbeszédpanel meghívása A képcserét a két űrlap között a következőképpen oldjuk meg. A párbeszédpanel meghívásakor programunk egyszerűen átmásolja a képet az frmrot képdobozába, ahol a felhasználó azt elforgatja. Ha a panelből való kilépéskor az OK gombra kattint a felhasználó, akkor visszamásoljuk az elforgatott képet a pb1 képdobozba. Private Sub mnuszerkesztéselforgatás_click(byval sender As System.Object, ByVal e As System.EventArgs) Handles mnuszerkesztéselforgatás.click frmrot.pb2.image = pb1.image A kép forgatása If frmrot.showdialog() = Windows.Forms.DialogResult.OK Then pb1.image = frmrot.pb2.image A kép forgatását a tükrözéshez hasonlóan, a RotateFlip metódussal végezhetjük. Ez azt jelenti, hogy első megközelítésben a numerikus léptetőhöz a következő kódot rendeljük: Public Class frmrot Private Sub nup_valuechanged(byval sender As System.Object, ByVal e As System.EventArgs) Handles nup.valuechanged If nup.value = 90 Then pb2.image.rotateflip(rotatefliptype.rotate90flipnone If nup.value = 180 Then pb2.image.rotateflip(rotatefliptype.rotate180flipnone If nup.value = 270 Then pb2.image.rotateflip(rotatefliptype.rotate270flipnone pb2.refresh() End Class Ha a programot kipróbáljuk, meglepő dolgot tapasztalunk. Amikor a képtető értékét 90 fokról 180 fokra növeljük, a kép a 90 fokos elforgatáshoz képest fordul el 180 fokot, így az eredetihez képest nem 180, hanem 270 fokkal fordul el. Ezt természetes is, hiszen a RotateFlip mindig az aktuális képet fordítja el. A problémát egyszerűen megoldhatjuk, ha az eredeti képről készítünk egy másolatot pl. pic néven, és ezt minden alkalommal visszatöltjük elfogatás előtt a pb2.image képdobozba:

Public Class frmrot Dim pic As Image Private Sub frmrot_load(byval sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load pic = pb2.image.clone Private Sub nup_valuechanged(byval sender As System.Object, ByVal e As System.EventArgs) Handles nup.valuechanged pb2.image = pic.clone Ettől kezdve a kód változatlan A Clone metódus a kép másolatát adja át az értékadás bal oldalán álló objektumnak. Ennek hiányában a másik objektum csak a kép egy új neve volna, ahogy ezt az objektumorientált programozással foglalkozó fejezetben láttuk Objektum láthatósága Objektumorientált programozási ismereteink alapján furcsának tűnhet, hogy a programunk főűrlapjáról minden további nélkül elérjük a párbeszédpanel képdobozát. Ez a párbeszédpanel ugyanis másik osztályhoz tarozik. Természetesen az osztály készítése során a programozó megadhatja, hogy az osztály tagjai (mező, tulajdonság, metódus) kívülről elérhetők-e, vagyis mi a láthatóságuk. Az osztályok esetében a származtatás miatt azonban több lehetőség van, mint amit a változóknál megismertünk. A Public kulcsszó ebben az esetben is globális láthatóságot jelent. Ha a Protected kulcsszót használjuk, akkor az adott tag csak a saját és az abból származtatott osztályokból érhető el. A Friend azt jelenti, hogy a tag abból a programból érhető el, ahol a deklarálva van, amelyet tovább finomíthatunk a Protected Friend együttes használatával. Végül a Private kulcsszó használata esetén a tag csak saját osztályából érhető el, ebben az esetben tehát a megosztásnak nincs sok szerepe. Egy űrlapra helyezett objektum (esetünkben képdoboz) láthatóságát a tulajdonság lap Modifiers pontjának módosításával adhatjuk meg. Visual Basicben az alapértelmezett beállítás a Friend. Programunkban egy másik érdekes dolog, hogy a kép forgatását végző panelt nem példányosítottunk, hanem a programkódban magát az frmrot osztályt használtuk. Ez a Visual Basic egy sajátossága: ha az osztálynak csupán egy példányát használjuk, akkor azt nem kell példányosítani.