Ciao a tutti, ho un problema con un piccolo programmino c#, un attributo di tipo graphics se usato in un metodo runtime, risulta "corrotto".
l'errore ha nome: System.ArgumentException: 'Parametro non valido.', e c'è dove provo ad usare il graphics per un semplice fillrectangle.
Vi allego il progetto, ho messo un key down dove se premi invio ti fa partire lo start nella user control partita, che ha come attributo questo fatidico graphics, chiamato e, avrei dovuto usarlo nel draw, ma ho visto che se viene eseguito in runtime (ho provato di tutto) non funziona nulla...
Invece se lo start viene eseguito non runtime funziona... qualcuno può gentilmente dargli una occhiata?
p.s. sono abbastanza niubbo di queste cose e sto provando a capirci qualcosa...
main ->
public partial class Main : Form
{
public Main()
{
InitializeComponent();
partita.assegna_label(ref score);
}
private void Main_KeyDown(object sender, KeyEventArgs e)
{
if (!(partita.è_startato) & e.KeyCode == Keys.Enter)
{
score.Text = "0";
partita.start();
}
else
{
partita.update_imput(e.KeyCode);
}
}
}
user control partita ->
public partial class Partita : UserControl
{
Random random;
public bool è_startato = false;
Label score;
Graphics e;
public Partita()
{
InitializeComponent();
}
public void start()
{
e.FillRectangle(Brushes.Red, 0, 0, 20, 20); //prova qua se lo start viene richiamato runtime (key down dal main) la e sembrerebbe
//corrotta? nulla? non lo so... allego una foto.
è_startato = true;
Pixels pixels = new Pixels(400, 400, 20, e);
//pixels.Draw(3, 6, 4, Color.Red, 0); //prova
//...
è_startato = false;
}
public void update_imput(Keys imput)
{
}
private void Partita_Paint(object sender, PaintEventArgs e)
{
//e_.Graphics.FillRectangle(Brushes.Red, 0, 0, 20, 20); //prova
this.e = e.Graphics;
}
public void assegna_label(ref Label a)
{
score = a;
}
}
Allegati: