1

我有 54 个按钮,平面样式 = 平面,我手动设计了每个按钮,在鼠标悬停和鼠标离开 w/c 时都有图像,它们都具有相同的设计。我应该怎么做才能使它比执行 mousehover 和 mouseleave 每个按钮的代码更容易。

4

1 回答 1

1

由于您尚未指定,因此我将假设为 winforms。

所以你有 54 个按钮,你手动编写了大概 108 个方法(54 个用于鼠标输入,54 个用于鼠标离开)

您可以做的是创建一个对象来保存按钮->图像信息,并将其全部存储在字典中。通过按钮 ID 键入它。IE

public class ButtonImageInfo 
{  
     public string ButtonId {get;set;}
     public string MouseEnterImage {get;set;}
     public string MouseLeaveImage {get;set;}
}

// ...
public Dictionary<string, ButtonImageInfo> _dict = new ...
_dict.Add("Button1", new ButtonImageInfo ("Button1", "Image1Enter", "Image1Leave"));
///    ... etc...

这将允许您编写一个 OnMouseEnter 和一个 OnMouseLeave 方法并将它们应用于每个按钮。

然后,您只需根据发件人 ID 获取正确的图像。

private void MouseLeaveEvent(object sender, EventArgs e)
  {
     Button b = sender as Button;
     if(b != null)
     { 
          string id = b.Id;
          //Do Something with _dict[id].MouseLeaveImage
     }
  }

  private void MouseEnterEvent(object sender, EventArgs e)
  {
     Button b = sender as Button;
     if(b != null)
     { 
          string id = b.Id;
          //Do Something with _dict[id].MouseEnterImage
     }
  }
于 2013-09-11T15:45:10.823 回答