ciao a tutti!
stavo facendo un esercizietto di richiamare in una classe "Form4" un altro oggetto di tipo "formaquadrato" e non sapisco perchè se io voglio aggiornare la posizione di un oggetto con un apposita funzione "updateposition" nella classe principale( una form) mi chiede nome_classe.updateposition anzichè istanza_della classe.updateposition.
Tra l'altro se metto nome_classe.updateposition funziona solo con un oggetto della classe, non con più oggetti, e questa cosa mi sembra non abbia senso.
Inoltre se io nella classe principale non dichiaro nessun oggetto di tipo formaquadro e lascio la funzione formaquadro.updateposition il pezzo è visibile e viene aggiornizione.
L'aggiornamento della posizione avviene all'interno della funzione associata a un timer.
Vi posto il codice:
codice:
using System;
using System.Drawing;// il namespace per gli elementi del form
using System.Windows.Forms;// il namespaces per il form
using System.Web;
using System.ComponentModel;
using System.ComponentModel.Design;
using System.Drawing.Drawing2D;
using System.Runtime.InteropServices;
using System.Media;
using System.Timers;
using System.Threading;
class Form4 : Form
{
public int pausa = 1;
public Form4() {
/* timers*/
System.Timers.Timer timer = new System.Timers.Timer(3000);
timer.Elapsed += new ElapsedEventHandler(timer_Elapsed);
timer.Enabled = true;
/* AGGIUNGO GLI OGGETTI AL FORM*/
public formaquadrato q = new formaquadrato();
public formaquadrato q1 = new formaquadrato();
this.Controls.Add(q);
this.Controls.Add(q1);
/* funzione che si attiva al verificarsi del timer*/
void timer_Elapsed(object sender, ElapsedEventArgs e)
{
formaquadrato.updatePosition();
//q.updatePosition();
this.Invalidate();
}
/* override OnPaint*/
protected override void OnPaint(PaintEventArgs e)
{
base.OnPaint(e);
Graphics g = e.Graphics;
formaquadrato.PPaint(g); // funzione che mi disegna l'oggetto
}
}