Modifier la taille du panneau de façon dynamique

Je me suis mise en œuvre d'une application qui doit faire glisser et déposer des boîtes à images sur un panneau.Boîtes à images sont ajoutées dynamiquement à partir du programme et donc j'ai mis de l'autoscroll true à la propriété dans le panneau.Mais quand j'ai faites glisser les cases en bas du panneau de la taille de l'écran passe.J'ai mis la propriété autosize faux dans le panneau.Le panneau est connecté sur un autre panneau.Je veux régler la taille de panneau au moment de l'exécution.Comment puis-je y parvenir.

public form1(int[,] dummy, int columnSize, int rowSize)
{
this.dummy= dummy;
numOfColumns = columnSize;
numOfRows = rowSize;
getData();
addIds = addIdArray;
data = mylist;
InitializeComponent();
//panel1.MinimumSize = new Size(columnSize * 40, rowSize * 40);
//panel1.Height = rowSize * 40;
//panel1.Width = columnSize * 40;
//panel4.Height = rowSize * 40;
//panel4.Width = columnSize * 40;
int x, y;
Structures.EmptyRectSpace space = new Structures.EmptyRectSpace();
for (int i = 0; i < data.Count; i++)//set picture boxes 
{
space = (Structures.EmptyRectSpace)data[i];
x = space.startingJ;
y = space.startingI;
int h, w;
h = space.length;
w = space.width;
p = new PictureBox();
p.Width = w * 40;
p.Height = h * 40;
p.BackColor = Color.DarkGreen;
p.Image = Properties.Resources.v;
p.BorderStyle = BorderStyle.FixedSingle;
p.Name = addIdArray[i].ToString();
p.Location = new Point((x + 1 - w) * 40, (y + 1 - h) * 40);
this.panel1.Controls.Add(p);
}
foreach (Control c in this.panel1.Controls)
{
if (c is PictureBox)
{
c.MouseDown += new MouseEventHandler(pictureBox1_MouseDown);
}
}
this.panel1.DragOver += new System.Windows.Forms.DragEventHandler(this.panel1_DragOver);
panel1.DragOver += new DragEventHandler(panel1_DragOver);
panel1.DragDrop += new DragEventHandler(panel1_DragDrop);
panel1.AllowDrop = true;
panel2.AllowDrop = true;
foreach (Control c in this.panel2.Controls)
{
c.MouseDown += new MouseEventHandler(pictureBox1_MouseDown);
}
this.panel2.DragOver += new System.Windows.Forms.DragEventHandler(this.panel2_DragOver);
panel2.DragOver += new DragEventHandler(panel2_DragOver);
panel2.DragDrop += new DragEventHandler(panel2_DragDrop); 
}

C'est le constructeur de la forme que le contenu du panneau. Quand il a chargé les zones de l'image doit être ajouté au panneau et y glisser-déposer des événements de groupe sont mises en œuvre.

Veuillez me donner un coup de main..

  • Est-ce Web, WinForm, ou WCF/Silverlight? Qu'est-ce que le contrôle effectif de la classe que vous utilisez? Vous dites que vous voulez définir la taille qu'une seule fois?
  • Très bonne question! J'ai supposé que c'était en Windows Form...
  • Quelques suggestions: Déplacez vos points initiaux (int[,] mannequin, int taillecolonne, int rowSize) à l'extérieur de votre demande de constructeur et de faire toutes vos initialisation et de travail après InitializeComponent() - dans le cas contraire, certaines de vos données pourraient être initialisation avec des données non valides.
InformationsquelleAutor Dinu | 2010-03-10