36 x PictureBox   zodpovězená otázka

VB.NET, WinForms

 Dim i As Integer
        Dim Obrazok As New PictureBox
        Dim c As Integer = 1
        For i = 1 To 36
            With Obrazok
                .Name = "PictureBox" & c
                .Height = 150
                .Width = 150
                .Location = New Point(784, 783)
                .Visible = True
                .Image = Image.FromFile("Pictures\Picture.jpg")
            End With
        Next

Riešim taký problem. Chcel by som kódom pridať na formulár 36 PictureBoxov s názvom PictureBox1 až PictureBox36 s rovnakým obrázkom, rovnaká velkosť ale rôzna lokacia. Aby som to nemusel všetko vypisovať chcel som použiť príkaz približne takýto kód. Nefunguje. Lokáciu doriešim neskôr ale momentálne mám problém aby sa mi zobrazili. Poradí niekto ?

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Tak zaprvé bych odstranil mega-neefektivní kód s načítáním nové instance stejného obrázku a provedl drobné změny.

Aby se PictureBox zobrazil jako ovládací prvek na formuláři, je třeba ho přidat do kolekce Controls.

Předpokládejme že existuje formulář s názvem Form1.

Dim picture As Image = Image.FromFile("Pictures\Picture.jpg")
For i As Integer = 1 To 36
  Dim Obrazok As New PictureBox()
  With Obrazok
    .Name = "PictureBox" & i.ToString()
    .Height = 150
    .Width = 150
    .Location = New Point(784, 783)
    .Image = picture
  End With
  Form1.Controls.Add(Obrazok)
Next
nahlásit spamnahlásit spam 2 / 2 odpovědětodpovědět

Dík. Som len začiatočník. Nevedel som si s tým poradiť. Je to paráda.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Prominte že vám skáču do rozhovoru ale jsem zvědavej začátečník,avšak nikde jsem zde nenašel polohu ostatních pictureboxu.Našel jsem prvního a následujícího...z čeho se bere poloha dalších?

Děkuji a ještě jednou se omlouvám za vpadnutí.

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Tazatel psal, že polohování bude teprve řešit. V uvedených příkladech jsou všechny pictureboxy naskládány na sobě (mají stejnou polohu).

nahlásit spamnahlásit spam -1 / 1 odpovědětodpovědět

Aha omlouvám se tedy to jsem nepostřehl.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

A čo ak už mám na Form1 36x PictureBox a kódom im chcem priradiť rovnaký obrázok ?

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Je otázkou, jak tam ty PictureBoxy máte.

Jestli to jsou jediné PictureBoxy, pak je nejjednodušší a asi i nejrychlejší projít všechny Controlls ve stejnojmenné kolekci Vašeho formuláře, zjistit, jestli se jedná o Picturebox a pokud ano, přiřadit mu obrázek (případně můžete udělat ještě i jiné kontroly třeba na jméno atd. pokud potřebujete třeba nějaké pictureboxy vyloučit)

Pokud máte ve formuláři hodně i jiných prvků, pak bude výhodné umístit všechny pictureboxy, o které máte zájem, do jednoho kontejneru a pak máte situaci zjednodušenou a zrychlenou (projdete všechny controlls pouze tohoto kontejneru).

Naopak přes jména to jde taky, ale bude to asi pomalejší - diskutovali jsme o tom dost pod tímnto článkem http://www.vbnet.cz/clanek--45-vb_net_od... , nebo například tady http://www.vbnet.cz/forum-tema--331-jak_...

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback