Passage de paramaitres ! Où est m'a faute ? [Résolu]

Signaler
Messages postés
104
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
29 avril 2008
-
Messages postés
104
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
29 avril 2008
-
Form1
Code :

public struct f_axe
{
public int v_axe_X;
public int v_axe_Y;
public int v_ID;
}
public f_axe[] axe_point = new f_axe[1000];


Par exemple la valeur de axe_point[3].v_axe_X et de 123 dans le Form1

Form2
Code :

WinForm imp_variable = new WinForm();



Code :

imp_variable.axe_point[3].v_axe_X;



Mais si je la passe dans le Form2 elle vaut 0.. pourquoi ?? comment faire pour garder les valeurs ?

36 réponses

Messages postés
1182
Date d'inscription
mercredi 21 janvier 2004
Statut
Membre
Dernière intervention
6 septembre 2011
14
Mais de rien joyeux noel a toi aussi...

Enfin A VOUS aussi !!!!

ami Csharpien qui nous lisez...la derriere votre ecran...

:o))))

ps : valide la reponse qui te convient....histoire que cela serve a d'autre....

@+

Arthenius

"Ce qui ne me tue pas, me rend plus fort..."
Messages postés
104
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
29 avril 2008
1
Ma structure passe bien dans mon form2 mais mon tableau de tructure ne passe pas.. quand je déclare public f_axe[] axe_point = new f_axe[1000]; dans mon form1 !

Comment faire pour passer mon tableau de structure ?
Messages postés
104
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
29 avril 2008
1
SVP aidez moi !

Dans le code ci dessus il y a que la structure qui passe ! mais pas le tableau de structure...
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
93
public class Form2 : System.Windows.Forms.Form
{
/// <summary>
/// Variable nécessaire au concepteur.
/// </summary>
private System.ComponentModel.Container components = null;
private maStructure[] st; 

public Form2(maStructure[] structure) 
{
//
// Requis pour la prise en charge du Concepteur Windows Forms
//
InitializeComponent();
st = structure;



non ?

Cocoricoooooooo !!!!
coq
MVP Visual C#
Messages postés
104
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
29 avril 2008
1
ca me donne une erreur dans le form1:
Form2 f = new Form2(structureform1);
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
93
message de l'erreur en question ?

Cocoricoooooooo !!!!
coq
MVP Visual C#
Messages postés
104
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
29 avril 2008
1
[C# Erreur] WinForm.cs(274): La méthode surchargée correspondant le mieux à 'Souris_draw.structureform1.structureform1(Souris_draw.maStructure[])' possède des arguments non valides
[C# Erreur] WinForm.cs(274): Argument '1' : impossible de convertir de 'Souris_draw.maStructure' en 'Souris_draw.maStructure[]'

C'est à l'envoie dans le form1..: Form2 f = new Form2(structureform1);

on envoie structureform1 et il recoit un tab:
private maStructure[] st
public Form2(maStructure[] structure)

Il faut envoyer le tab de la stucture pas la struct l'erreur doit etre là.. mais je trouve pas la syntaxe..
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
93
au debut tu voulais passer ton tableau axe_point non ?

Form2 f = new Form2(axe_point);


Cocoricoooooooo !!!!
coq
MVP Visual C#
Messages postés
104
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
29 avril 2008
1
Form1

using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;

namespace Souris_draw
{
public struct f_axe
{
public int v_axe_X;
public int v_axe_Y;
public int v_ID;
}
/// <summary>
/// Description Résumé de WinForm.
/// </summary>
public class WinForm : System.Windows.Forms.Form
{
public f_axe[] axe_point = new f_axe[1000];
/// <summary>
/// Variable requise par le concepteur.

private f_axe f_axe_preview;
public int v_ind=0; //Incrémentation pour axe X,Y
public int v_ind2=0;
private System.Windows.Forms.Button n_affiche;
private System.Windows.Forms.Timer t_affiche;
private System.Windows.Forms.Button n_preview;

/// </summary>
private System.ComponentModel.IContainer components;
private System.Windows.Forms.TextBox textBox1;
private System.Windows.Forms.Timer timer1;
private System.Windows.Forms.Panel panel_Dessin;
private Graphics m_panelGraphics;
private Bitmap m_pointBmpBlack;
private System.Windows.Forms.TextBox textBox2;
private System.Windows.Forms.Label label1;
private System.Windows.Forms.Label label2;
private System.Windows.Forms.Button n_clean;
private System.Windows.Forms.Timer t_axe;

public WinForm()
{

//
// Requis pour la gestion du concepteur Windows Form
//
InitializeComponent();

//
// TODO: Ajouter tout le code du constructeur après l'appel de InitializeComponent
//
}

/// <summary>
/// Nettoyage des ressources utilisées.
/// </summary>
protected override void Dispose (bool disposing)
{
if (disposing)
{
if (components != null)
{
components.Dispose();
}
}
base.Dispose(disposing);
}

#region Code généré par le concepteur Windows Form
/// <summary>
/// Méthode requise pour la gestion du concepteur - ne pas modifier
/// le contenu de cette méthode avec l'éditeur de code.
/// </summary>

#endregion

/// <summary>
/// Le point d'entrée principal de l'application.
/// </summary>
[STAThread]
static void Main()
{
Application.Run(new WinForm());
}

private void timer1_Tick(object sender, System.EventArgs e)
{
// textBox1.Text=panel_Dessin.PointToClient(Cursor.Position).X.ToString();
// textBox2.Text=panel_Dessin.PointToClient(Cursor.Position).Y.ToString();

}

private void panel_Dessin_MouseMove(object sender, System.Windows.Forms.MouseEventArgs e)
{
if ( e.Button == MouseButtons.Left )
{
m_panelGraphics.DrawImageUnscaled(m_pointBmpBlack, e.X, e.Y);
}

}

private void panel_Dessin_MouseUp(object sender, System.Windows.Forms.MouseEventArgs e)
{
m_panelGraphics.Dispose();
m_panelGraphics = null;
t_axe.Enabled=false;
}

private void panel_Dessin_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
{
m_panelGraphics = panel_Dessin.CreateGraphics();
t_axe.Enabled=true;
}

private void WinForm_Load(object sender, System.EventArgs e)
{
m_pointBmpBlack = new Bitmap(10,10);
m_pointBmpBlack.SetPixel(0,0,Color.Black);
}

private void n_clean_Click(object sender, System.EventArgs e)
{
panel_Dessin.Invalidate();
v_ind=0;
v_ind2=0;
}

private void t_axe_Tick(object sender, System.EventArgs e)
{
axe_point[v_ind].v_axe_X=panel_Dessin.PointToClient(Cursor.Position).X;
axe_point[v_ind].v_axe_Y=panel_Dessin.PointToClient(Cursor.Position).Y;
axe_point[v_ind].v_ID=v_ind;
v_ind++;
}

private void n_affiche_Click(object sender, System.EventArgs e)
{
t_affiche.Enabled=true;
textBox1.Text=axe_point[v_ind2].v_axe_X.ToString();
textBox2.Text=axe_point[v_ind2].v_ID.ToString();
v_ind2++;
}

private void panel_Dessin_MouseLeave(object sender, System.EventArgs e)
{
t_axe.Enabled=false;
}

private void n_preview_Click(object sender, System.EventArgs e)
{
n_preview myForm = new n_preview(f_axe_preview);
myForm.Show();
}
}
}

form2

using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;

namespace Souris_draw
{
/// <summary>
/// Description Résumé de WinForm1.
/// </summary>
public class n_preview : System.Windows.Forms.Form
{
/// <summary>
/// Variable requise par le concepteur.
//WinForm imp_variable = new WinForm();
private f_axe[] st;
//Importation des variables

int v_ind_test=0;
/// </summary>
private System.ComponentModel.IContainer components;
private System.Windows.Forms.TextBox textBox1;
private System.Windows.Forms.TextBox textBox2;
private System.Windows.Forms.Timer t_affichage_2;
private System.Windows.Forms.Button button1;
private System.Windows.Forms.Timer timer1;
private System.Windows.Forms.Timer timer2;
private System.Windows.Forms.TextBox textBox3;

public n_preview(f_axe[] structure)
{
//
// Requis pour la gestion du concepteur Windows Form
//
InitializeComponent();
st = structure;

//
// TODO: Ajouter tout le code du constructeur après l'appel de InitializeComponent
//
}

/// <summary>
/// Nettoyage des ressources utilisées.
/// </summary>
protected override void Dispose (bool disposing)
{
if (disposing)
{
if (components != null)
{
components.Dispose();
}
}
base.Dispose(disposing);
}

#region Code généré par le concepteur Windows Form
/// <summary>
/// Méthode requise pour la gestion du concepteur - ne pas modifier
/// le contenu de cette méthode avec l'éditeur de code.
/// </summary>

private void button1_Click(object sender, System.EventArgs e)
{
t_affichage_2.Enabled=true;
}

private void t_affichage_2_Tick(object sender, System.EventArgs e)
{


//Définition d'un "Crayon" pour dessiner la forme.
Pen pen = new Pen(Color.Black,1);

}

}

}
}

Voilà mon code.. tu comprendreras surement !
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
93
pour etre franc : non lol
au debut du sujet tu voulais passer un tableau de structure et maintenant tu veux passer autre chose

Cocoricoooooooo !!!!
coq
MVP Visual C#
Messages postés
104
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
29 avril 2008
1
C'est vrais je suis pas très clair..

Je vais tout reprendre à 0..

Dans mon form1 je déclare une structure qui est:
public struct f_axe
{
public int v_axe_X;
public int v_axe_Y;
public int v_ID;
}


Puis je fais un tableau de 1000 cases avec:
public f_axe[] axe_point = new f_axe[1000];

Toujours dans mon form1.. ..bon j'y mets des valeurs..
Puis ensuite j'ouvre mon form2 !
n_preview myForm = new n_preview(f_axe_preview);
myForm.Show();

mais dans mon form2 je n'ai pas acces à ma strucutre (forcément puisque elle est déclarée dans le form1), dans un 1er temps j'avais essayé ce code là pour utiliser ma stucture dans le form2:
WinForm imp_variable = new WinForm();

Je mettais ca dans mon form2 et je pouvais utiliser ma structure.. (enfin presque) parce que que toute mes valeurs qui avaient été enregistrées dans le form1 etais inisialiser dans le form2... donc toute à 0... ca m'était donc inutile.. puissque c'était les valeurs de la stucutre qui m'interessait..

Après Arthenius m'a donné un code pour passer ma stucture du form1 au form2 ! Son code marche très bien ! mais le problème est que il passe que la structure et pas le tableau de la structure..

Donc mon problème est de passer toute ma structure avec les 1000 cases qu'il a dans le form1 dans le form2 !
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
93
donc c'est bien ce que je disais : passe ton tableau axe_point

Cocoricoooooooo !!!!
coq
MVP Visual C#
Messages postés
104
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
29 avril 2008
1
Le code qui me semble le plus juste c'est le tiens avec :

Form2 f = new Form2(axe_point);


Mais il me met des erreurs dans la compilation..

Pour faire passer axe_point:
je déclare: private axe_point f_axe_preview;

et quans j'ouvre le form2: n_preview myForm = new n_preview(f_axe_preview);

Le compile me marque:

[C# Erreur] WinForm.cs(25): 'Souris_draw.WinForm.axe_point' désigne 'champ' où 'classe' était attendu
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
93
n_preview myForm = new n_preview(axe_point);


Cocoricoooooooo !!!!
coq
MVP Visual C#
Messages postés
104
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
29 avril 2008
1
J'avais essayé

ca me donne:

[C# Erreur] WinForm.cs(274): La méthode surchargée correspondant le mieux à 'Souris_draw.n_preview.n_preview(Souris_draw.f_axe)' possède des arguments non valides
[C# Erreur] WinForm.cs(274): Argument '1' : impossible de convertir de 'Souris_draw.f_axe[]' en 'Souris_draw.f_axe'
Messages postés
104
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
29 avril 2008
1
Ca marche ! merci pour votre patience !