2009-08-17 7 views
0

J'ai hérité d'un contrôle de Panel-Class. J'ai ajouté quelques événements à ce contrôle. J'ai donné mouvement - capacité à ce contrôle et ainsi de suite ..Pour afficher un contrôle dans deux Windows Forms

J'ai deux écrans d'affichage. J'ai un programme principal où le panneau hérité montre une image sur une petite zone. Je veux montrer ce panneau en plein écran sur une seconde.

J'ai créé un nouveau formulaire et utiliser le même contrôle ... Mais je ne peux pas déplacer les deux écrans ensemble. Que devrais-je faire ?

+0

Je suis confus par votre question. Que signifie "Mais je ne peux pas déplacer les deux écrans ensemble" signifie? Voulez-vous qu'un écran agisse comme une loupe pour l'autre écran? Ensuite, vous déplacez le petit panneau autour de l'image et juste la partie qui est sous le panneau est affichée en plein écran. Est-ce exact? Cela ressemble à un morceau de gâteau dans WPF. C'est une option pour toi? – Bryan

Répondre

0

Si vous souhaitez pouvoir manipuler les deux formulaires en même temps, affichez le deuxième formulaire avec Show() au lieu de ShowDialog(). Vous pouvez certainement passer le panneau d'origine au second formulaire et l'ajouter à la collection Controls du formulaire. Je ne suis pas sûr que ce soit la meilleure façon de le faire (partager un contrôle sur deux formulaires), mais je ne connais pas non plus vos exigences.

+0

J'utilise déjà .Show() Je veux montrer le panneau d'image en même temps dans deux fenêtres et travailler de manière synchrone. Si le panneau des fenêtres principales est déplacé, le panneau en plein écran doit également être déplacé. Comment avez-vous manipulé les deux formes en même temps? – Cmptrb

0

Je n'utiliserais pas une seconde forme, mais un second 'mode' (plein écran vs pas) sur votre formulaire existant. Vous pouvez avoir 2 contrôles de panneau, ou juste un et redimensionner.

0

Je pense que ce type de comportement nécessite un modèle de vue de modèle. Si cela est mis en œuvre, le reste devrait tomber en place.

0

Le problème est que vous avez seulement une instance de votre panneau hérité. Vous devez en faire une autre "copie", une nouvelle instance, avant de pouvoir l'ajouter à l'autre formulaire.

Mypanel mypanel1 = new Mypanel(); 
Mypanel mypanel1copy = new Mypanel(); 

Vous pouvez modifier ces instances pour contenir les mêmes données tout le temps à travers la course, ou utiliser quelque chose comme « Deep Copy »:

How do you do a deep copy of an object in .NET (C# specifically)?

Gardez à l'esprit, que toute modification à mypanel1 devrait être fait à mypanel1copy, aussi.

Questions connexes