2010-09-16 6 views
12

Je construis un contrôle qui comprend 15x15 = 225 boutons, et doit être redimensionnable. Parce que c'est une grille, l'ancrage et l'ancrage ne fonctionneront pas. J'ai essayé TableLayoutPanel et manipulé l'événement resize pour placer et contrôler manuellement les contrôles. Dans les deux cas, le redimensionnement est inacceptable lent. Suspendre/Reprendre la disposition dans la fonction de redimensionnement lorsque je gère manuellement la mise en page n'aide pas.Winforms C#: affichage efficace de nombreux contrôles

Y at-il quelque chose de fondamental que je peux changer pour accélérer les choses, ou est-ce juste une limitation des contrôles natifs? Je comprends que je peux construire un contrôle personnalisé à partir de zéro, en manipulant les clics et en me peignant - même si je préfère rester avec les contrôles natifs si possible.

Modifier

Je sais qu'il ya beaucoup de boutons. Ma question est technique. pas un sur la conception de l'interface utilisateur.

+2

C'est un enfer de beaucoup de boutons. Que diable avez-vous besoin de nombreux boutons pour? –

+0

+1 à Alastair Pitts. Nous devrions éviter autant de boutons apparaissant sur l'interface graphique. Je pense que les utilisateurs finaux sont d'accord avec moi aussi. –

+0

Profil de l'application lors du redimensionnement pour voir pourquoi cela prend si longtemps. –

Répondre

6

WinForms ne gère pas l'affichage de ce grand nombre de contrôles en même temps malheureusement.

Si je dans votre situation, je voudrais tout d'abord considérer si je pouvais diviser le formulaire en plusieurs pages. Dans de nombreux cas, cela serait également plus facile à comprendre pour l'utilisateur.

Mais dans votre cas qui ne semble pas être une option. Est-ce que vous faites quelque chose comme un jeu de style dragueur de mines? Là vous avez une grille de boutons qui sont tous cliquables. Dans une telle situation, je vous suggère d'opter pour un contrôle personnalisé par le propriétaire, où vous consolidez tous les boutons d'un contrôle. Ne pas construire un contrôle composite qui contient 225 boutons - qui ne sera pas du tout :-) aider

Une dernière option pourrait être de passer à WPF. WPF utilise le rendu accéléré par le matériel, donc il peut être plus rapide, mais avec autant de contrôles, même cela peut aider.

+0

Gotcha. Pouvez-vous m'indiquer quelque chose au-delà de «ne peut tout simplement pas y faire face» - y a-t-il un message de blog/une explication de performance quelque part qui peut m'aider à comprendre ce qui cause la mort? +1 pour ne pas essayer de contourner intelligemment la question technique. Je sais que c'est beaucoup de boutons et je le comprends. Le contrôle personnalisé c'est. – phillipwei

+0

Je parle par expérience personnelle ici :-) Beaucoup mieux que n'importe quel blog ... hehe. –

+0

Non vraiment. J'ai essayé de faire des choses similaires et fini avec une forme complètement inutilisable. La performance est bonne jusqu'à un certain point où elle tombe en panne. Peut-être que vous pouvez vous en sortir avec une grille 10x10, peut-être 12x12 ou 8x8, mais à un certain point, elle deviendra inutilisable. –

Questions connexes