我创建了一个应用程序,它使用组合框选择用户,然后显示该用户的数据库。但是,当您滚动而不首先单击面板或 datagridview 时,它会通过选择我继续的不同用户数据库信息在组合框上滚动
this.cmbNetworkComputers.MouseWheel += new System.Windows.Forms.MouseEventHandler(this.cmbNetworkComputers_MouseWheel);
与
void cmbNetworkComputers_MouseWheel(object sender, MouseEventArgs e)
{
((HandledMouseEventArgs)e).Handled = true;
}
但是,这些禁用了我的整个 winform,而不仅仅是组合框 cmbNetwork 计算机,如何仅禁用一个控件的鼠标滚轮
最佳答案
向您的代码添加事件处理程序
private void anycontrol_MouseEnter(object sender, System.EventArgs e)
{
var senderControl = sender as System.Windows.Forms.Control;
if(senderControl==null)
return;
senderControl.Focus();
}
并将其分配给您希望自动应用焦点的任何控件。
somePanel.MouseEnter += new System.EventHandler(anycontrol_MouseEnter);
//or this way
somePanel.MouseEnter += anycontrol_MouseEnter;
someComboBox.MouseEnter += anycontrol_MouseEnter;
编辑:
包括您提供的详细信息,我会这样做:
bool AllowUsersScrolling;
private void usersCombobox_MouseLeave(object sender, System.EventArgs e)
{
AllowUsersScrolling = false;
}
private void usersCombobox_MouseEnter(object sender, System.EventArgs e)
{
AllowUsersScrolling = true;
}
private void usersCombobox_MouseWheel(object sender, MouseEventArgs e)
{
if(!AllowUsersScrolling)
((HandledMouseEventArgs)e).Handled = true;
}
并将这些处理程序分别附加到控件的事件。
关于c# - 如何禁用一个控件(即组合框)的鼠标滚轮?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23655726/