OVH Cloud OVH Cloud

Tableaux de contrôles et instanciation des contrôles

3 réponses
Avatar
Adrien RICHARD
Bonjour à tous,

je désiré réaliser dans une Windows Form un tableau de 9 par 9 TextBox.
L'utilité de les mettre dans un tableau est qu'elle sont aisi indexables.
J'ai réalisé le code suivant que j'ai mis dans le constructeur de ma Form,
mais rien ne s'affiche :

public partial class MainForm : Form
{
private System.Windows.Forms.TextBox[,] Grille;
public MainForm()
{
Grille = new System.Windows.Forms.TextBox[9,9];
for (int i = 0; i < 9; i++)
{
for (int j = 0; j < 9; j++)
{
int x = 51 + (i * 33);
int y = 51 + (j * 33);
this.Grille[i, j] = new System.Windows.Forms.TextBox();
this.Grille[i, j].BorderStyle =
System.Windows.Forms.BorderStyle.FixedSingle;
this.Grille[i, j].Font = new System.Drawing.Font("Microsoft
Sans Serif", 15F, System.Drawing.FontStyle.Bold,
System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.Grille[i, j].Location = new System.Drawing.Point(50, 50);
this.Grille[i, j].MaxLength = 1;
this.Grille[i, j].Name = "Grille";
this.Grille[i, j].Size = new System.Drawing.Size(31, 23);
this.Grille[i, j].TabIndex = 2;
this.Grille[i, j].TextAlign =
System.Windows.Forms.HorizontalAlignment.Center;
this.Grille[i, j].Show();
}
}
InitializeComponent();
}
}

Une autre solution que serai plus simple pour moi serai de faire un tableau
de 9*9 d'une classe "Case" et dans chacune de ces class instancier une
TextBox. mais cela ne marche pasnon plus.

Merci de vos réponses

Cordialement

3 réponses

Avatar
Faust
tu n'indique pas le "parent" de tes TextBox:
this.Controls.Add(this.Grille[i, j]); (si ma mémoire est bonne)

/_Adrien RICHARD_ a émis l'idée suivante/ :
Bonjour à tous,

je désiré réaliser dans une Windows Form un tableau de 9 par 9 TextBox.
L'utilité de les mettre dans un tableau est qu'elle sont aisi indexables.
J'ai réalisé le code suivant que j'ai mis dans le constructeur de ma Form,
mais rien ne s'affiche :

public partial class MainForm : Form
{
private System.Windows.Forms.TextBox[,] Grille;
public MainForm()
{
Grille = new System.Windows.Forms.TextBox[9,9];
for (int i = 0; i < 9; i++)
{
for (int j = 0; j < 9; j++)
{
int x = 51 + (i * 33);
int y = 51 + (j * 33);
this.Grille[i, j] = new System.Windows.Forms.TextBox();
this.Grille[i, j].BorderStyle =
System.Windows.Forms.BorderStyle.FixedSingle;
this.Grille[i, j].Font = new System.Drawing.Font("Microsoft
Sans Serif", 15F, System.Drawing.FontStyle.Bold,
System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.Grille[i, j].Location = new System.Drawing.Point(50,
50); this.Grille[i, j].MaxLength = 1;
this.Grille[i, j].Name = "Grille";
this.Grille[i, j].Size = new System.Drawing.Size(31, 23);
this.Grille[i, j].TabIndex = 2;
this.Grille[i, j].TextAlign =
System.Windows.Forms.HorizontalAlignment.Center;
this.Grille[i, j].Show();
}
}
InitializeComponent();
}
}

Une autre solution que serai plus simple pour moi serai de faire un tableau
de 9*9 d'une classe "Case" et dans chacune de ces class instancier une
TextBox. mais cela ne marche pasnon plus.

Merci de vos réponses

Cordialement




--
Mephitiquement votre,
Faust
ICQ #161252577
Avatar
Herve Chapalain
Il faut rajouter chacun des contrôles à la collection Controls de la Form de
base:

Grille = new System.Windows.Forms.TextBox[9,9];
for (int i = 0; i < 9; i++)
{
for (int j = 0; j < 9; j++)
{
...
this.Grille[i, j].Show();
this.Controls.Add(this.Grille[i, j]); //
<=***************************
}
}

-herve
Avatar
Adrien RICHARD
Merci à tous !

"Herve Chapalain" wrote:

Il faut rajouter chacun des contrôles à la collection Controls de la Form de
base:

Grille = new System.Windows.Forms.TextBox[9,9];
for (int i = 0; i < 9; i++)
{
for (int j = 0; j < 9; j++)
{
...
this.Grille[i, j].Show();
this.Controls.Add(this.Grille[i, j]); //
<=***************************
}
}

-herve