Faire l'utilisateur de l'écran de contrôle à l'extérieur de la forme boundry
J'ai décidé de remettre sur pied le datetime picker, comme une norme datetime picker n'est pas les valeurs null. L'utilisateur veut commencer avec un champ vide et le type (pas de sélection de la date.
J'ai créé un contrôle utilisateur à le faire, mais si le contrôle de l'utilisateur est à proximité du bord de la forme, il va être coupé sur la forme boundry. La norme datetime picker ne souffre pas de ce problème.
Voici une image montrant le problème. Mon de contrôle de l'utilisateur est sur la gauche, la norme datetimepicker est sur la droite:
le texte d'alt http://img50.imageshack.us/img50/9104/datetimepickervu6.jpg
Comme vous pouvez le voir, la norme de contrôle s'affichera sur la forme ET l'application boundry. Comment puis-je obtenir le mois de sélecteur en mon pouvoir de faire la même chose?
Merci!
C'est un problème de CSS. Vous devez définir le z-index sur la div contenant le calendrier contextuel. Regardez le tutoriel sur w3schools: w3schools.com/Css/pr_pos_z-index.asp EDIT: Maintenant que vous avez réalisé que vous êtes réellement en utilisant WinForms, s'il vous plaît ignorer ma réponse 🙂
Oui, mon tag est incorrect. J'ai besoin d'un autre Coke, je pense. 🙂
Oh, donc les gens utiliser IE 🙂
OriginalL'auteur Danny Frencham | 2008-11-11
Vous devez vous connecter pour publier un commentaire.
La ToolStripDropDown de contrôle dispose de cette fonctionnalité, donc en héritant de ce que nous pouvons faire un simple PopupWindow.
Utilisation:
Je l'ai eu à travailler. Est-il de toute façon à supprimer la frontière?
J'ai mis en place ce code, mais le popup continue de voler le focus. Est-il un moyen pour éviter cela?
Ont essayé cela avec une ListBox comme le contrôle de contenu, mais il affiche toujours à sa plus petite taille possible. Quelqu'un d'autre a vu cela? De même, avec des jblaske, le popup vole accent qui n'est pas voulu.
Juste trouvé une lgpl mise en œuvre à l'aide de cette technique ici: codeproject.com/Articles/17502/Simple-Popup-Control
OriginalL'auteur Jesper Palm
Les captures d'écran ressemble à une des applications Windows Forms, donc, ma réponse est pour winforms.
Je suppose que la meilleure solution serait de créer un customcontrol qui elle-même utilise le datetime picker qui a déjà le comportement.
Afficher une zone de texte vide jusqu'à ce qu'il obtient cliqué, puis afficher le datetimepicker.
Qui serait vous faire économiser un tas de code..
Ce contrôle personnalisé devrait faire l'affaire: codeguru.com/csharp/csharp/cs_controls/custom/article.php/c9645
Il s'est avéré que je ne pouvais pas aller dans cette voie. J'ai commencé avec la commande ci-dessus, mais il n'y a aucun moyen de définir le contrôle de sorte que l'utilisateur peut onglet et commencez à taper, une caractéristique importante pour l'utilisateur que je suis en train d'écrire.
OriginalL'auteur Tigraine
Je suis tombé sur cette lorsque vous essayez de mettre en œuvre un contrôle personnalisé et découvert que c'est un très difficile problème. Il n'y a pas une fonctionnalité intégrée au sein de la
Windows.Forms
modèle pour prendre en charge les contrôles dont la zone d'affichage s'étend à l'extérieur de la zone client de leur conteneur.Fondamentalement, vous devrez soit utiliser l'API Windows ou dessiner vos contrôles à l'intérieur d'un Formulaire avec AlwaysOnTop ensemble. Les deux approches sont plus difficiles que ce qu'ils devraient être. J'ai fini la refonte de mon contrôle, de sorte qu'au lieu de l'affichage de l'élargissement de son contenu dans une liste déroulante, il a utilisé une boîte de dialogue modale. C'était un joli insatisfaisant solution, mais j'ai passé quelques semaines à essayer d'autres approches et ne pourrait jamais obtenir quelque chose qui a travaillé de façon uniforme dans tous les cas d'utilisation (impression de disparaître lorsque l'application perd le focus).
OriginalL'auteur Robert Rossney
Je ne suis pas sûr à 100%, mais un rapide coup d'oeil à la DateTimePicker classe sur Réflecteur me prend à la
SafeNativeMethods.SetWindowPos
classe interne.Vous pouvez remplacer le
SetBoundsCore
à partir de la classe de Contrôle de base ou, comme Tigraine a déclaré, créer un contrôle personnalisé basé sur le DateTimePicker.Espérons que cela aide,
Bruno Figueiredo
OriginalL'auteur Bruno Shine
La raison que votre commande obtient coupé est parce qu'il est un enfant de contrôle de la forme que vous résidez sur. Aucun contrôle sur le formulaire doit être contenu par la forme, d'où il obtient coupé.
Je n'ai pas fait cela .Net, mais a eu un problème similaire en VB6. La solution est alors de définir le parent de la fenêtre pop-up (le calendrier dans votre cas) à l'ordinateur de bureau. Cela va lui permettre de s'étendre au-delà des limites de votre forme. Vous devrez faire de la P/Invoke magie pour trouver le hWnd de la fenêtre contextuelle, et un autre de P/Invoke pour définir le parent.
OriginalL'auteur Dan R