C# 当鼠标指向C中的按钮时,我想禁用其他按钮#

C# 当鼠标指向C中的按钮时,我想禁用其他按钮#,c#,.net,winforms,button,C#,.net,Winforms,Button,当鼠标指向C中的另一个按钮时,我想禁用其他按钮# private void Form1\u加载(对象发送方,事件参数e){ foreach(Controls.OfType()中的按钮btn) { btn.MouseEnter+=新的System.EventHandler(btn_MouseEnter); btn.MouseLeave+=新的System.EventHandler(btn_MouseLeave); } } 私有void btn_MouseEnter(对象发送方,System.Eve

当鼠标指向C中的另一个按钮时,我想禁用其他按钮#

private void Form1\u加载(对象发送方,事件参数e){
foreach(Controls.OfType()中的按钮btn)
{
btn.MouseEnter+=新的System.EventHandler(btn_MouseEnter);
btn.MouseLeave+=新的System.EventHandler(btn_MouseLeave);
}
}
私有void btn_MouseEnter(对象发送方,System.EventArgs e)
{
变量senderButton=(按钮)发送器;
senderButton.Enable=true;//不工作
}
私有void btn_MouseLeave(对象发送方,System.EventArgs e)
{
变量senderButton=(按钮)发送器;
senderButton.Enable=false;//不工作
}

这可能不是最好的解决方案,但无论如何我都会尝试

private void btn_MouseEnter(object sender, System.EventArgs e) 
{
    var senderButton = (Button)sender;
    foreach(var btn in this.Controls.OfType<Button>())
    {
        if (btn != senderButton)
            btn.Enabled = false;
    }
}

private void btn_MouseLeave(object sender, System.EventArgs e)
{
    foreach(var btn in this.Controls.OfType<Button>())
    {
        btn.Enabled = true;
    }
}
private void btn\u MouseEnter(对象发送方,System.EventArgs e)
{
变量senderButton=(按钮)发送器;
foreach(this.Controls.OfType()中的var btn)
{
如果(btn!=发送按钮)
btn.Enabled=false;
}
}
私有void btn_MouseLeave(对象发送方,System.EventArgs e)
{
foreach(this.Controls.OfType()中的var btn)
{
btn.Enabled=true;
}
}
而不是

senderButton.Enable = true;
你必须在所有按钮上循环,比如

foreach(Button btn in this.Controls.OfType<Button>())
{
    if (btn != senderButton)
        btn.Enable = false; 
}
foreach(此.Controls.OfType()中的按钮btn)
{
如果(btn!=发送按钮)
btn.Enable=false;
}
private void btn\u MouseEnter(对象发送方,System.EventArgs e)
{
foreach(Controls.OfType()中的按钮btn)
{
如果(btn==((按钮)发送器))
{
btn.Enabled=true;
}
其他的
{
btn.Enabled=false;
}
}
}
私有void btn_MouseLeave(对象发送方,System.EventArgs e)
{
foreach(Controls.OfType()中的按钮btn)
{
btn.Enabled=true;
}
}

So。。是否要禁用除当前悬停按钮之外的所有其他按钮?您发布的代码正在尝试禁用和重新启用当前按钮,而不是其他按钮。只有当您的按钮处于启用状态时,才会触发btn_MouseEnter事件您的问题让我想知道您为什么要这样做。。。当然,如果鼠标放在按钮x上,你永远不会有机会点击其他地方?这只是一个测试运行,以了解这些方法是否有效。正如@uthistran-s所评论的,当按钮被禁用时事件是否会触发?@Alex由于重新启用按钮的功能是由一个未被禁用的按钮触发的,应该可以。
foreach(Button btn in this.Controls.OfType<Button>())
{
    if (btn != senderButton)
        btn.Enable = false; 
}
private void btn_MouseEnter(object sender, System.EventArgs e)
    {
        foreach (Button btn in Controls.OfType<Button>())
        {
            if (btn == ((Button)sender))
            {
                btn.Enabled = true; 
            }
            else
            {
                btn.Enabled = false;
            }
        }
    }

    private void btn_MouseLeave(object sender, System.EventArgs e)
    {
        foreach (Button btn in Controls.OfType<Button>())
        {
            btn.Enabled = true;
        }
    }