Remarque: Utilisation C # Formulaire Windows dans Visual Studio 2017 em> Le code ci-dessous est maintenant correct pour une utilisation future. P> J'essaie de développer du code qui m'aidera Détecter dans quel quadrant la souris est chacune de 0,5 seconde. J'ai d'abord essayé avec 0 mais j'ai découvert qu'il n'y a pas de valeur négative pour la position de la souris en C #. Donc, au lieu de cela, je pensais utiliser la largeur et la hauteur que j'ai calculée avec: p> code complet ici: p> Ensuite, j'ai utilisé ce qui suit pour détecter le quadrant: p> Cependant, lorsque j'imprime ma liste, je reçois toujours le quadrant 1. Y a-t-il un meilleur moyen d'obtenir le centre de l'écran afin que je puisse faire mes conditions de manière correcte? P> N'oubliez pas que j'essaie de le faire à l'extérieur du formulaire et non nécessairement. p> p>
3 Réponses :
Je créerais 4 alors vous pouvez faire Un simple .Contains à vérifier le pointeur de la souris: p> rectangle code> s puis utilisez rectangle.contains code> pour vérifier où la souris est:
J'en ai besoin pour travailler comme taille d'écran, le formulaire sera minimisé pendant qu'il les détecte.
Screen.FromControl obtiendra les limites de l'écran que le «plus» du formulaire s'allume, quel que soit le nombre d'écrans sont attachés.
problème d'étendue?
public void setScreenSize()
{
W = Screen.PrimaryScreen.Bounds.Width;
H = Screen.PrimaryScreen.Bounds.Height;
Console.WriteLine("Height is: " + H + "width is: " + W);
}
résumer mes commentaires d'en haut:
Lorsque vous appelez de sorte que ces variables masqueront vos champs que vous avez déclarés dans le P> xxx pré> de sorte que les champs de classe ne sont pas initialisés, ils ont leur Lorsque vous appelez maintenant votre et donc votre code alors retirez le pour clarification que je recommande d'utiliser setScreenSize () code> à partir de OnFemeLoDload () code> Vous ne définirez que les variables locales w et h code> Vous avez défini dans vos méthodes. p> par défaut (int) code> valeur 0 code>. p> addmouseposition () code> Vous utiliserez toujours la valeur par défaut 0 code> au lieu des valeurs réelles que vous avez stockées dans le int h code> et int w code> p> ajouter (1) code> la plupart du temps. Seulement dans le coin supérieur gauche de votre écran, vous devez entrer dans la branche ajouter (3) code>. P> int code> à l'avant de la local w code> et h code> va corriger le problème. p> ceci. : P> public void setScreenSize()
{
this.W = Screen.PrimaryScreen.Bounds.Width;
this.H = Screen.PrimaryScreen.Bounds.Height;
Console.WriteLine("Height is: " + this.H + "width is: " + this.W);
}
Veuillez nous montrer où vous utilisez la méthode
addmouseposition () code>. Il semble également que vous définissez votre criblage uniquement sur leW code> eth code> de votreSetScreensize () code>. Il est donc possible que vous appeliez votre chèque avec une valeur par défaut 0 surw code> eth code>, qui aboutira au quadrant 1.Il me manque des variables dans le code fourni. La première fonction SetScreensize remplit deux variables locales. L'addmousposition utilise quatre paramètres, mais il est inconnu d'où cela vient. Surtout le second est d'intérêt, car cela définit le si / sinon dans la routine
SetCreenSize () est appelé sur la charge de formulaire
addmousposition dans l'intérieur d'une classe statique et il reçoit W et H qui sont définis par SetScreenSize ();
Les valeurs d'écran d'accumulation sont-elles correctes? Assurez-vous que la demande est déclarée DPI au courant. Comment obtenez-vous la position de votre souris?
Souris.x et souris.y.y
C'est le but. Vous ne définissez que des variables locales et aucun membre de la classe.Vous approchez-vous de fonctionner lorsque vous définissez des champs ou des propriétés pour
H code> etw code> et utilisez-les dansSETSCréenSize () < / code>J'ai mis à jour la question pour inclure le code complet
Remplacez le
int h code> et leint w code> dans votre méthode par justeh code> etw code>.Oups tu as raison! Je me demande pourquoi ça ne me plaignait pas
@Sarakat: La raison pour laquelle je suggère que la modification a été, que vous modifiez votre question afin que le problème que vous n'ayez plus d'octure, donc la question que cela ne montre pas le problème que vous avez eu.