【问题标题】:Change background of windows button in mousehold event in C#在C#中更改鼠标按住事件的Windows按钮背景
【发布时间】:2020-11-01 22:02:39
【问题描述】:

我有一个按钮的图像。我为图像使用了平面按钮。默认情况下,在标准按钮中,当您单击或将鼠标悬停在按钮上时,Windows 按钮的背景图像会发生变化。但我想在鼠标按住事件中更改背景图像。

我正在使用 Visual Studio 2008。

【问题讨论】:

    标签: c# visual-studio winforms


    【解决方案1】:

    使用MouseDownMouseUp 事件来回改变背景:

    private void btn_MouseDown(object sender, MouseEventArgs e)
    {
      //Replace with the appropriate control/image/color change:
      btn.BackColor = Color.Black;
    }
    
    private void btn_MouseUp(object sender, MouseEventArgs e)
    {
      //As mentioned above
      btn.BackColor = SystemColors.Control;
      //Show the MsgBox here
      MessageBox.Show("The background is fine!");
    }
    

    【讨论】:

    • 语法是什么:btn.BackgroundImage = ?????是 btn.BackgroundImage = "C:\\image.png" 还是什么?
    • 好的,我知道了 btn.BackgroundImage = new Bitmap(source);但是当我在按钮单击时显示消息框时会产生问题。该按钮不会恢复正常。只有当我关闭从按钮单击事件派生的消息框时才会这样做
    • @saaZ: 重新改变颜色后显示MessageBox,在MouseDown事件中做,我已经更新了我的答案,请看一下。
    【解决方案2】:

    创建一个包含 2 个图像的 ImagemList。

    Private Sub Button1_MouseLeave(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.MouseLeave
    
    
    
        'out the button
    
    End Sub
    
    
    
    Private Sub Button1_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Button1.MouseMove
    
    
    
        'In the button
    
        Button1.BackgroundImage = ImageList2.Images(1)
    End Sub
    

    【讨论】:

      【解决方案3】:

      我想如果您使用 winforms,这将非常复杂 - 当您将其标记为 winforms 时,您可能会这样做。我认为在winforms中你必须定义自己的控件来实现这一点,这会花费你很多时间和精力。或者,您可以使用 mousedown 和 mouseup 事件,但是如果您想更改其他内容,该方法不是很灵活。

      但是,如果您不需要使用 winforms,但也可以使用 WPF,则有多种可能性,因为 WPF 正是为此而设计的。您可以定义自己的样式和模板来更改控件的视觉外观。要更改鼠标按住事件的颜色,您可以使用触发器。有关模板的详细信息,请参见以下页面:click

      希望对您有所帮助。

      【讨论】:

      • 投了反对票,因为我认为在 winforms 中很难实现这一点是完全错误的。然后指出如何使用 WPF 来做这件事是除此之外的重点,因为原始帖子明确要求基于标签的 winforms。
      猜你喜欢
      • 1970-01-01
      • 2011-04-04
      • 1970-01-01
      • 2017-07-28
      • 2017-12-15
      • 1970-01-01
      • 2019-02-05
      • 2014-10-16
      • 2015-10-02
      相关资源
      最近更新 更多