Pagina 1 di 4 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 38
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    455

    [VB08]Aggiungere PictureBox

    Ciao di nuovo, prima di partire con la spiegazione del mio ennesimo problema volevo dire che spero di non rompere troppo le palle aprendo un topic al giorno...

    quello che devo fare,è creare una PictureBox che ogni volta che un pulsante viene premuto la pictureBox viene aggiunta,inoltre vorrei che le picturebox create con quel pulsante siano controllabili nel senso che ogni picturebox aggiunta faccia una funzione tutta sua,

    qualcuno ha qualche guida o qualche idea su come si possa realizzare?

  2. #2
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    455
    mm,

    ho creato questo codice:

    codice:
            Dim NPictureBox As New PictureBox
    
            NPictureBox = Form4.PictureBox1 ' definisce quale modello di picturebox usare per creare quello nuovo
            NPictureBox.Visible = True
            NPictureBox.Top = 500
            NPictureBox.Width = 500
            NPictureBox.Height = 500
            NPictureBox.Left = 500
            Controls.Add(newPictureBox)
    però avendo il pulsante al di fuori del form2,come posso dirgli di creare la picture box all'interno di esso? e come faccio a farlo creare sulle coordinate del mouse?

    e come faccio a dare una funzione per ogni picturebox creato?

    edit: ho creato un array:

    codice:
            Dim newPictureBox(5) As PictureBox
    
            newPictureBox(1) = Form4.PictureBox1
    
            Controls.Add(newPictureBox(1))
    ora però come faccio,come faccio a richiamare ogni singolo picturebox creato (magari in modo che se clicco due volte sopra di esso posso settargli il nome e la funzione)? e poi rimangono le stesse due domande,come faccio a crearlo sulle coordinate del mouse e come faccio a inserirlo nel form2?

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    455
    nessuno sa come aiutarmi?

    e soprattutto sulla parte di aggiungere la picturebox sul form2...

    aggiungo anche che quando clicco sul pulsante per creare la picturebox le altre me le crea una sotto all'altra e quindi non le posso selezionare...come posso fare?

  4. #4
    Utente di HTML.it L'avatar di gibra
    Registrato dal
    Apr 2008
    residenza
    Italy
    Messaggi
    4,244
    Originariamente inviato da GhostFire
    nessuno sa come aiutarmi?

    e soprattutto sulla parte di aggiungere la picturebox sul form2...

    aggiungo anche che quando clicco sul pulsante per creare la picturebox le altre me le crea una sotto all'altra e quindi non le posso selezionare...come posso fare?
    Ovviamente devi fornire coordinate diverse per ogni picturebox.

  5. #5
    Utente di HTML.it
    Registrato dal
    May 2010
    Messaggi
    48
    posso aiutarti ma dovresti spiegare in maniera dettagliata il tuo problema.
    e poi non mi è chiara una cosa: tu vuoi creare sul form2 una picturebox con le cordinate del mouse, che però (il mouse) si trova su un alto form (infatti se il bottone che premi è su un altro form le cordinate del mouse saranno OVVIAMENTE aldifuori del form2). spiegati meglio

  6. #6
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    455
    Ciao,

    ho risolto in un altro modo il fatto del picture box,ho messo una funzione che permette di trascinare la picture box ,la picture box viene creata tramite pulsante sul form1,e vorrei che essa venga posizionata nel form2,ognuna in una posizione diversa ,altrimenti vengono sovrapposte una sopra l'altra e non posso spostarle singolarmente

  7. #7
    Utente di HTML.it
    Registrato dal
    May 2010
    Messaggi
    48
    potresti farmi vedere questa funzione che sposta il picturebox?
    cmq se devi creare il ptb in una posizione diverza ogni volta di modo che non si sovrapponga con quello precedentemente creato devi:
    1. creare due variabili integer chiamate "x"e"y" al interno del form dove sta il bottone che devi premere(che sò il form4)
    2. alla pressione del bottone che crea la ptb incrementare le due variabili e impostare la proprietà location della ptb al punto (x,y)

    Ti spiego con un esempio:

    public class form4

    dim x,y as integer

    private sub btn1_clik()...
    x+=20 'o x=x+20
    y+=20 'o y=y+20
    dim PB as new pictureBox
    pb.widt=100 'larghezza
    pb.haight=100 'altezza
    pb.visible=true
    pb.LOCATION=new system.drawing.point(x,y) 'e qui sta quello che ti serviva a te
    FORM2.controls.add(pb) 'specificando form2 la crea sul form2
    end sub

    end class
    in questo modo le ptb vengono create ogni volta alla locazione specificata da x e y.

    per ottenere le cordinate x e y del mouse puoi fare:

    x=cursor.position.x
    y=cursor.position.y

    ma questo programma che dovrebbe fare?

  8. #8
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    455
    Ciao,

    grazie tantissimo per l'aiuto che mi hai offerto,però,il picturebox non compare,ho apportato questa piccola modifica al tuo codice:

    Dim PB As New PictureBox
    PB = Form4.PictureBox1
    PB.Location = New System.Drawing.Point(x, y) 'e qui sta quello che ti serviva a te
    Form2.Controls.Add(PB) 'specificando form2 la crea sul form

    solo che quando clicco sul pulsante la picture box non compare sul form2,

    puo' essere che devo cambiare le coordinate?in caso fosse così,come faccio a sapere quali sono le coordinate centrali di un form?

    e questo è il codice per spostare il pb:

    codice:
        Private Sub PictureBox1_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseMove
    
            If e.Button = Windows.Forms.MouseButtons.Left Then
                'posizione del cursore rispetto al form
                Dim newLocation As Point = PointToClient(Cursor.Position)
                'coordinate dell'angolo superiore sinistro
                newLocation.Offset(-cursorOffset.X, -cursorOffset.Y)
    
                PictureBox1.Location = New Point(newLocation.X, newLocation.Y)
            End If
        End Sub
    ps: starei creando un programmino per creare giochi punta e clicca

    EDIT: ho riprovato,adesso funziona,solo che ne inserisce solo uno...

  9. #9
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    455
    Ciao,

    ho dato una ricontrollata,il codice funziona,però,ora come faccio a rendere queste picturebox trascinabili?

    l'errore me lo da sull'handles (non riconosce PB che ho dichiarato nella classe)
    codice:
        Private Sub PB_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PB.MouseMove
    
            If e.Button = Windows.Forms.MouseButtons.Left Then
                'posizione del cursore rispetto al form
                Dim newLocation As Point = PointToClient(Cursor.Position)
                'coordinate dell'angolo superiore sinistro
                newLocation.Offset(-cursorOffset.X, -cursorOffset.Y)
    
                PB.Location = New Point(newLocation.X, newLocation.Y)
            End If
        End Sub

  10. #10
    Utente di HTML.it
    Registrato dal
    May 2010
    Messaggi
    48
    in che modo hai risolto?
    per quanto riguarda il problema che quando facevi pb =form4.picturebox1 ho trovato, e c'è voluto un pò, una possibile spiegazione(non sicura):
    ogni controllo (inclusi quelli non del tuo ma di altri programmi) ha un Handles ovvero un codice numerico che lo identifica
    quando andavamo a fare pb=form4.picturebox1 passavamo a pb tutti i valori delle proprietà di picturebox1 compreso il valore della proprietà Handles
    così facendo entrambe le picturebox avevano lo stesso Handles e questo provocava che picturebox1 diventava pb e non veniva creata nessuna nuova picturebox.
    Ci sono due soluzioni al problema:
    1.o Crei una nuova classe che eredita la classe picturebox
    2.o, al momento della creazione della nuova picturebox, imposti tutte le proprietà(tipo: image backcolor..) ai valori desiderati
    Se non sei abituato a lavorare con le classi usa la seconda soluzione che va benissimo
    il fatto , come dicevi nell'altro messaggio, che apparentemente non creava nessuna ptb nuova
    è dovuto dal fatto che il colore di default delle ptb è quello di sfondo del form. Quindi te le creava ma non le vedevi per questo motivo, le cambi il backcolor ti accorgerai che in realtà le crea, ci ho provato.
    (che poema)
    Invece per l' ultimo problema che mi hai detto potrebbe essere dovuto dal fatto pb è dichiarata
    nel form2 (tra l' altro come variabile locale al interno della sub btn1_clik), dichiarala al interno di un modulo come variabile pubblica (non Dim ma Public). Per aggiungere un modulo: aggiungi-nouvo elemento-modulo.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.