[VB.NET] Cambiare coordinate un controllo

venerdì 26 dicembre 2008 - 22.18

m4rko Profilo | Newbie

Ciao, spero di non aver sbagliato sezione...comunque come da titolo vorrei sapere come modificare le coordinate di un controllo...ho provato in due modi:

controllo.location.x=a
Ho scoperto che non si puo settare asd
controllo.location.offset(a,b)
Non funziona

Grazio in anticipo e Buon Natale(anche se un po' in ritardo xD)

aiedail92 Profilo | Expert

Ciao

Non puoi usare quei metodi perchè Point è una struttura (quindi un tipo valore, non riferimento), pertanto quelle che andresti a modificare sarebbero le proprietà di una copia dell'oggetto e non dell'oggetto vero e proprio.

Naturalmente puoi comunque modificare la proprietà, assegnando un nuovo valore:

controllo.Location = New Point(x, y)

Luca

m4rko Profilo | Newbie

Grazie mille
Però non credo di aver capito bene il concetto di struttura...mi potresti rimandare a un link o spiegarmelo per favore?

aiedail92 Profilo | Expert

Puoi guardare questi due link:

http://msdn.microsoft.com/it-it/library/2hf02550.aspx
http://msdn.microsoft.com/it-it/library/2hkbth2a.aspx

Se poi non hai ancora le idee chiare, resto a disposizione

Luca

m4rko Profilo | Newbie

Alcune parti sembrano scritte per programmatori assembler, ma sono riuscito a capirci qualcosa
Però ho un altro problema...vorrei che l'oggetto in questione si muovesse "gradualmente"...c'è un'alternativa ai timer(a proposito...se ne metto millemila appesantisco il programma?)?

aiedail92 Profilo | Expert

>Alcune parti sembrano scritte per programmatori assembler, ma
>sono riuscito a capirci qualcosa



>Però ho un altro problema...vorrei che l'oggetto in questione
>si muovesse "gradualmente"...c'è un'alternativa ai timer

Il timer può essere una soluzione, in alternativa potresti creare un thread unicamente addetto al movimento dei controlli.

>(a proposito...se ne metto millemila appesantisco il programma?)?

Ovviamente ogni controllo contribuisce ad apesantire il programma, quindi è sempre meglio non esagerare...

Luca

m4rko Profilo | Newbie

Ehm...thread? ^^"
MSDN non è stato di grande aiuto...comunque grazie per la pazienza!

aiedail92 Profilo | Expert

In pratica i thread vengono utilizzati per suddividere i compiti di un processo. Infatti, mentre stai eseguendo del codice (ad esempio un'elaborazione che richiede diversi secondi), l'interfaccia grafica dell'applicazione non può rispondere ai comandi, perchè il codice è "impegnato" nell'elaborazione. In questo caso crei un nuovo thread su cui eseguire l'elaborazione così l'interfaccia può continuare a rispondere.

Nel tuo caso, al posto di un Timer puoi usare un Thread dedicato allo spostamento dei controlli. È solo un suggerimento, da prendere in considerazione solo se hai "tempo da perdere" , in quanto iniziando a lavorare coi thread ti troverai ad affrontare problemi di chiamate Cross-Thread non valide, eccezioni, delegati, Invoke e quant'altro...

P.S: vedi se questo ti aiuta: http://msdn.microsoft.com/it-it/library/system.threading.thread.aspx

Luca

m4rko Profilo | Newbie

Grazie ancora, vedrò di studiare i thread
Ora però sto creando un pulsante da codice, ma non so come impostare la dimensione...sono arrivato a fare questo
Dim a As Button = New Button a.Location = New Point(6, 13)

aiedail92 Profilo | Expert

Per impostare la dimensione devi usare la proprietà Size:

'Crea il Button Dim a As New Button() 'Posizione a.Location = New Point(6, 13) 'Dimensione a.Size = new Size(75, 30) 'Aggiunge il Button al Form Me.Controls.Add(a)

Luca

m4rko Profilo | Newbie

Grazie mille e buon anno!
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5