Je suis implémentant une application qui doit glisser et déposer des zones d'image dans un panneau. Les zones d'image sont ajoutées dynamiquement à partir du programme et j'ai donc défini la propriété autoscroll sur true dans le panneau. J'ai fait glisser les boîtes en bas dans le panneau la taille du panneau a été réduite. J'ai mis la propriété autosize false dans le panneau. Le panneau est ancré dans un autre panneau. Je veux définir la taille du panneau au moment de l'exécution. ce.Modifier la taille du panneau dynamiquement
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);
}
Ceci est le constructeur de la forme qui contient le panneau. Quand il a chargé les cadres d'image doivent être ajoutés au panneau et là les événements de baisse de traînée de panneau sont mis en application.
S'il vous plaît me donner un coup de main ..
S'agit-il de Web, WinForm ou WCF/Silverlight? Quelle est la classe de contrôle réelle que vous utilisez? Voulez-vous dire que vous voulez définir la taille une seule fois? – Blanthor
Question très appropriée! J'ai supposé que c'était dans Windows Form ... –
Quelques suggestions: Déplacez vos éléments initiaux (* int [,] factice, int columnSize, int rowSize *) en dehors de votre constructeur d'application et faites tout votre initialisation et travail * après * 'InitializeComponent()' - sinon, certaines de vos données pourraient être initialisées avec des données invalides. – jp2code