Estoy implementando una aplicación que necesita arrastrar y soltar cuadros de imagen en un panel. Los cuadros de imagen se agregan dinámicamente desde el programa y he establecido la propiedad autoscroll en verdadero en el panel. Pero cuando He arrastrado las cajas en la parte inferior del panel, el tamaño del panel se ha reducido. He puesto la propiedad de autosize en falso en el panel. El panel está acoplado en otro panel. Quiero configurar el tamaño del panel en tiempo de ejecución. ¿Cómo puedo lograrlo? esta.Cambie el tamaño del panel de forma dinámica
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);
}
Este es el constructor del formulario que contenía el panel. Cuando se cargó, los cuadros de imagen se deben agregar al panel y allí se implementan los eventos de arrastrar y soltar del panel.
Por favor, dame una mano ..
¿Es esta web, WinForm o WCF/Silverlight? ¿Cuál es la clase de control real que está utilizando? ¿Estás diciendo que quieres establecer el tamaño solo una vez? – Blanthor
¡Pregunta muy apropiada! Supuse que esto era en Windows Form ... –
Algunas sugerencias: Mueva sus elementos iniciales (* int [,] dummy, int columnSize, int rowSize *) fuera del constructor de la aplicación y realice toda su inicialización y trabajo * después * 'InitializeComponent()' - de lo contrario, algunos de sus datos podrían inicializarse con datos no válidos. – jp2code