【问题标题】:Control hover color控制悬停颜色
【发布时间】:2013-02-25 10:24:45
【问题描述】:

对不起,这是一个初学者的问题,但我没有解决。 我有一个带有 4 个面板控件的 Windows 窗体应用程序。现在我希望当用户用鼠标悬停时面板改变它们的背景。我试过以下:

private void Panel1_MouseIn(object sender, EventArgs e)
{
    panel1.BackColor = Color.Red;
}

private void Panel1_MouseOut(object sender, EventArgs e)
{
    panel1.BackColor = Color.Blue;
}

这很好,但是因为我有 4 个面板而不是一个,所以我必须再添加 6 个这样的功能......我试图为所有面板创建一个功能,但事件发送者没有可访问BackColor 属性。

有没有办法为所有面板创建一个 MouseIn 函数? 如果是,怎么做?

【问题讨论】:

    标签: c# winforms panel


    【解决方案1】:

    你应该施放它:

    private void Panel_MouseIn(object sender, EventArgs e)
    {
      Panel pan = sender as Panel;
      pan.BackColor = Color.Red;
    } 
    

    并将这一个函数用于所有 4 个面板作为事件处理程序

    【讨论】:

      【解决方案2】:

      您可以将您的发送者对象投射到类似的面板

      Panel panel = (Panel)sender;
      if(panel != null)
      // Set the BackColor
      

      【讨论】:

      • 如果为空,为什么要检查它?空发件人无法生成事件。
      • 我检查它以确保不访问非面板元素。例如,可能是按钮或其他东西想要对此事件做出反应。使用前检查投射对象是一种习惯
      • 啊好吧,我只是希望程序员不使用面板处理程序处理按钮事件:)
      【解决方案3】:

      您应该首先将 sender 对象转换为 Panel :

      Panel panel = sender as Panel;
      if (panel == null)
          return;
      
      panel.BackColor = Blue;
      

      【讨论】:

        【解决方案4】:

        您可以为 MouseInMouseOut 定义一个 EventHandler,然后

        private void Panel1_MouseIn(object sender, EventArgs e)
        {
            Panel p = sender as Panel;
            if(p == panel1){
                //set color  
            }
            else if(p == panel2){
               //set color
            }
        ...
        }  
        

        MouseOut 也一样

        【讨论】:

        • 错了,没有必要对每个面板都这样做。 sender 是对产生事件的对象的引用
        • 是的,所以您可以使用 ONE 事件处理程序,并在该 ONE 事件处理程序中决定特定面板应该获取哪种颜色。
        • 查看 OP 的代码,我可能会建议他正试图更改 MouseIn 或 MouseOut 上的一个面板
        • @VladL 是的,我知道。这就是您检查发件人的原因。而且发件人只能是一个!所以最多会改变一个面板。
        • 所以如果不同的面板在 mouseIn 上应该有不同的颜色,你会为这种情况执行 if else 吗?
        【解决方案5】:

        在 mouse in and function 中删除您放置的所有代码并在下面编写一行简单的代码 试试看吧

        ((Control)sender).BackColor = Color.Red;
        

        【讨论】:

          猜你喜欢
          • 2016-10-26
          • 1970-01-01
          • 1970-01-01
          • 2015-10-18
          • 2014-02-05
          • 1970-01-01
          • 2011-08-15
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多