Sto implementando un'applicazione che deve trascinare e rilasciare le finestre di immagini in un pannello. Le finestre di immagine vengono aggiunte dinamicamente dal programma e quindi ho impostato la proprietà autoscroll su true nel pannello. Ma quando Ho trascinato le caselle in basso nel pannello, la dimensione del pannello è stata ridotta. Ho messo la proprietà autosize false nel pannello. Il pannello è ancorato in un altro pannello. Voglio impostare la dimensione del pannello in fase di esecuzione. Come posso ottenere Questo.Modifica dinamicamente la dimensione del pannello
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);
}
Questo è il costruttore del modulo che contiene il pannello. Quando è stato caricato, le caselle immagine devono essere aggiunte al pannello e vengono implementati gli eventi di trascinamento del pannello.
favore mi dia una mano ..
Questo Web, WinForm o WCF/Silverlight? Qual è l'attuale classe di controllo che stai utilizzando? Stai dicendo che vuoi impostare la dimensione solo una volta? – Blanthor
Domanda molto appropriata! Ho pensato che fosse in Windows Form ... –
Alcuni suggerimenti: sposta gli elementi iniziali (* int [,] dummy, int columnSize, int rowSize *) al di fuori del costruttore dell'applicazione e esegui tutto l'inizializzazione e il lavoro * dopo * 'InitializeComponent()' - in caso contrario, alcuni dati potrebbero essere inizializzati con dati non validi. – jp2code