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.
Vous devez vous connecter pour publier un commentaire.
Je ne pouvais pas obtenir ce travail à moins que j'ai mis le max de largeur par programmation dans le code. Il n'a pas d'importance ce que la largeur maximale était dans le concepteur (ou si la largeur maximale était encore ensemble).
Ne pouvez-vous pas obtenir ce par le Panneau.La hauteur et le Panneau.Propriétés de largeur?
Sinon, si vous souhaitez spécifier une taille minimale de votre panneau de façon dynamique, vous pouvez le faire par le biais de la SetMinimumSize méthode, si je ne me trompe pas. Est-ce que vous cherchez?