c# - 如何禁用一个控件(即组合框)的鼠标滚轮?

标签 c# winforms datagridview combobox mouseevent

我创建了一个应用程序,它使用组合框选择用户,然后显示该用户的数据库。但是,当您滚动而不首先单击面板或 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/

相关文章:

c# - Xamarin 异步方法使用 OnStart()

C# 图表 n 图

c# - 如何从数据集中设置 DataGridViewComboBoxColumn 值

c# - 使用空日期时间对 DataGridView 进行排序

c# - 如何为单个项目返回 IEnumerable<T>

c# - 如何创建用于在 C# 中描述对象的自定义语法?

c# - 如何从其 Win32 句柄中获取 System.Windows.Form 实例?

c# - 在 wpf 中调用 Required

C# 非矩形按钮

c# - 如何将Azure Mobile服务数据放入Asp.net(C#)中的 GridView 中?