L'événement MouseWheel ne se déclenche pas lorsque vous utilisez un contrôle avec des barres de défilement (dans Windows Forms C #)
La roulette de la souris événement n'a pas le feu
quand je suis à l'aide de tout contrôle (ListBox, Panneau, zone de texte) avec les barres de défilement.
Pour reproduire le problème:
public class Form1 : Form
{
private readonly Button button1;
private readonly TextBox textBox1;
private void button1_MouseWheel(object sender, MouseEventArgs e)
{
ToString(); //doesn't fire when uncomment lines below
}
public Form1()
{
button1 = new Button();
textBox1 = new TextBox();
SuspendLayout();
button1.Location = new System.Drawing.Point(80, 105);
button1.Size = new System.Drawing.Size(75, 23);
button1.MouseWheel += button1_MouseWheel;
button1.Click += button1_Click;
textBox1.Location = new System.Drawing.Point(338, 105);
//textBox1.Multiline = true; //uncomment this
//textBox1.ScrollBars = ScrollBars.Vertical; //uncomment this
textBox1.Size = new System.Drawing.Size(100, 92);
ClientSize = new System.Drawing.Size(604, 257);
Controls.Add(textBox1);
Controls.Add(button1);
ResumeLayout(false);
PerformLayout();
}
//Clicking the button sets Focus, but even I do it explicit Focus() or Select()
//still doesn't work
private void button1_Click(object sender, System.EventArgs e)
{
button1.Focus();
button1.Select();
}
}
source d'informationauteur halorty
Vous devez vous connecter pour publier un commentaire.
J'ai eu le même problème, et ce qui a fonctionné pour moi, c'était pour ajouter un gestionnaire pour l'événement MouseEnter dans le contrôle, que l'on est déclenchée avec ou sans accent.
Après que j'ai pu obtenir la molette de la souris événements sans problèmes.
Normalement, vous devez vous assurer que le contrôle que vous souhaitez pour gérer la roulette de la souris événement est actif.
Par exemple essayer d'appeler
button1.Select()
dans le Formulaire de Charge (ou Représenté) de l'événement et ensuite à l'aide de la molette de défilement.par exemple:
J'ai trouvé la solutiongility est par défaut "Configuration de la Souris". Lenovo USB Optical Wheel Mouse configuration par défaut est:
Panneau de configuration/Souris/Roue/Whell->Activer le Défilement Universel;
J'ai changé pour:
Panneau de configuration/Souris/Roue/Whell->de l'Utilisation de Microsoft Office 97 de Défilement Uniquement l'Émulation
Maintenant .net code de la Molette de travail avec Porté Contrôle.
Mais les questions sont:
Des idées ?
J'ai essayé votre exemple, et, si les lignes ont été commentées ou non, la roulette de la souris événement ne se déclenche si le bouton est concentré. Ce comportement est par la conception. (le
MouseWheel
événement, comme les événements de clavier, va à la porté de contrôle)