Ich bin eine Anwendung implementieren, die Bildfelder in einem Panel ziehen und ablegen müssen. Bildfelder werden dynamisch aus dem Programm hinzugefügt, und ich habe die Autoscroll-Eigenschaft im Panel auf True festgelegt Ich habe die Boxen unten im Panel ziehen die Panel-Größe wurde reduziert. Ich habe Autosize-Eigenschaft false in Panel.The Panel ist in einem anderen Panel angedockt.Ich möchte die Größe der Panel zur Laufzeit einstellen.Wie kann ich erreichen Dies.Ändern Sie die Größe des Bedienfelds dynamisch
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);
}
Dies ist der Konstruktor des Formulars, das Panel enthält. Wenn es geladen wird, müssen die Bildfelder zum Panel hinzugefügt werden und dort Drag-Drop-Ereignisse des Panels implementiert werden.
Bitte geben Sie mir eine helfende Hand ..
Ist dieses Web, WinForm oder WCF/Silverlight? Was ist die tatsächliche Kontrollklasse, die Sie verwenden? Wollen Sie sagen, dass Sie die Größe nur einmal einstellen wollen? – Blanthor
Sehr angemessene Frage! Ich nahm an, dass dies in Windows Form war ... –
Ein paar Vorschläge: Verschieben Sie Ihre ursprünglichen Elemente (* int [,] Dummy, int columnSize, int rowSize *) außerhalb Ihrer Anwendung Konstruktor und machen Sie alle Ihre Initialisierung und Arbeit * nach * 'InitializeComponent()' - Anderenfalls könnten einige Ihrer Daten mit ungültigen Daten initialisiert werden. – jp2code