Affichage des chaines dans un panel

Signaler
Messages postés
48
Date d'inscription
lundi 23 février 2009
Statut
Membre
Dernière intervention
30 avril 2009
-
Messages postés
1860
Date d'inscription
lundi 28 novembre 2005
Statut
Modérateur
Dernière intervention
14 février 2015
-
Salut,
dans mon forme j'ai un bouton .
private void button4_Click(object sender, EventArgs e)
{ if (radioButton1.Checked)
{ panel2.Controls.Clear();
for (int k = (int)numericUpDown1.Value; k > 0; k--)
{
GroupBox groupBox3 = new GroupBox();

groupBox3.Size = new System.Drawing.Size(379, (int)numericUpDown3.Value * 100);
groupBox3.Text = "Question " + (k);
groupBox3.Dock = DockStyle.Top;
g[k] = groupBox3;
for (int j = (int)numericUpDown3.Value; j > 0; j--)
{ Label r = new Label();
RichTextBox rep = new RichTextBox();

//x = y + j * (int)(numericUpDown3.Value * 60 / numericUpDown3.Value);
r.Text = "Rep." + (j);
r.Size = new System.Drawing.Size(25, 13);
//r.Location = new System.Drawing.Point(35, x);
r.Dock = DockStyle.Top;
inf[j] = r;
rep.Size = new System.Drawing.Size(340, 30);
//rep.Location = new System.Drawing.Point(70, x);
rep.Dock = DockStyle.Top;
reponse[j] = rep;
//groupBox3.Location = new System.Drawing.Point(3, 3);

}

for (int l = (int)numericUpDown3.Value; l > 0; l--)
{
g[k].Controls.Add(reponse[l]);
g[k].Controls.Add(inf[l]);}
Label q = new Label();
q.Text = "Ques." + (k);
q.Size = new System.Drawing.Size(25, 13);
//q.Location = new System.Drawing.Point(20, 20 + i * (int)numericUpDown3.Value * 80);
q.Dock = DockStyle.Top;

RichTextBox ques = new RichTextBox();
ques.Size = new System.Drawing.Size(358, 55);
//ques.Location = new System.Drawing.Point(60, 17 + i * (int)numericUpDown3.Value * 80);
ques.Dock = DockStyle.Top;
question[k] = ques;

g[k].Controls.Add(ques);
g[k].Controls.Add(q);
panel2.Controls.Add(g[k]);}
je désir de afficher le contenu des richbox dans un panel.
je fais comme ça
private void panel1_Paint(object sender, PaintEventArgs e)
{Graphics g = panel1.CreateGraphics();
......
float yposq = 110;
float yposr = 110;
for (int i = epreuve.getNbq()-1; i >0; i--)
{
string StringToDrawq = string.Format("Question {0} : {1}", i, epreuve.getQuestion()[i]);
//Determine la longueur de la chaine en tenant compte du rectangle de gauche
SizeF sizeq = g.MeasureString(StringToDrawq, myFont, panel1.Width - rectangleWith, stringFormat);
g.DrawString(StringToDrawq, myFont, Brushes.Black, new RectangleF(rectangleWith + 30, yposq + 2, sizeq.Width, sizeq.Height));
for (int j = epreuve.getNbr()-1; j >0 ; j--)
{
string StringToDrawr = string.Format("Réponse{0} : {1}", j, epreuve.getReponse()[i, j]);
SizeF sizer = g.MeasureString(StringToDrawr, myFont, panel1.Width - rectangleWith, stringFormat);

// dessine un rectangle devant le texte
g.DrawRectangle(Pens.Black, 30, yposq + yposr, rectangleWith, // largeur prédéfinie
sizer.Height); // hauteur calculée de la chaine
g.DrawString(StringToDrawr, myFont, Brushes.Black, new RectangleF(rectangleWith + 30, yposr+yposq + 2, sizer.Width, sizer.Height));
yposq += sizeq.Height + 6;
yposr += sizer.Height + 6;


g.DrawString(StringToDrawq, myFont, Brushes.Black, new RectangleF(rectangleWith + 30, yposq + 2, sizeq.Width, sizeq.Height));

}

je récupère mes données en utilisant une classe

class epreuve
{
public static String[] question;
public static String[,] reponse;
public static String nomEpreuve,nb,disp;
public static int nb_q, nb_r, i = 0,j=-1,visible=0;

public epreuve(int q, int r)
{
nb_q = q;
nb_r = r;
question = new String[nb_q];
reponse=new String[nb_q,nb_r];
}

......
public static void setQuestion(String Q,int q)
{
question[q-1] = Q;
}
public static void setReponse(String R,int q,int r)
{
reponse[q-1,r-1] = R;
}
public static String[] getQuestion()
{
return question;
}
public static String[,] getReponse()
{
return reponse;
}

quand j'éxécute je obtient:
question1:......
question1:.......
question0:......
question0:......
réponse1:...
réponse0:....
réponse1:.....
réponse0:.....
mais je doit avoir:
question0 suivi des réponses 0,1,2,3..
question1 suivi des réponses 0,1,2,3..
.
.

S.V.P comment je peut corriger mes fautes?
merci d'avance...

2 réponses

Messages postés
48
Date d'inscription
lundi 23 février 2009
Statut
Membre
Dernière intervention
30 avril 2009

S.V.P donnez moi une solution.
Messages postés
1860
Date d'inscription
lundi 28 novembre 2005
Statut
Modérateur
Dernière intervention
14 février 2015
49
Salut.

Poster un bout de code, c'est très bien. Poster 5000 lignes de code, c'est moins bien.
Essaie de cibler le bout de code qui pose problème (en utilisant par exemple les points d'arrêt), car 1) ça te permettra peut-être de trouver ton erreur par toi même, 2) ça nous évitera de passer 2 heures à comprendre ce que ton code fait exactement (surtout s'il s'agit d'une erreur de conception, on pourrait ne pas du tout comprendre ton code).

Krimog :
while (!succeed = try()) ;