如何使按钮的尺寸增大(垂直增大),而不使总尺寸增大?

时间:2018-09-04 08:38:21

标签: vb.net

我与在 Visual Basic NET 中使用过的按钮有轻微冲突。

我的第一个代码示例是针对我的 Button_Height_Tick 的,该控件控制更改按钮的高度:

Dim ChangeHeight As Boolean = False

Private Sub Button_Height_Tick(sender As Object, e As EventArgs) Handles Button_Height.Tick
    If Not ChangeHeight Then
        Do Until FlatButton1.Height = 63
            FlatButton1.Height += 1
            System.Threading.Thread.Sleep(1)
        Loop
        ChangeHeight = True
    Else

    End If
End Sub

还有我的 FlatButton1_MouseHover

Private Sub FlatButton1_MouseHover(sender As Object, e As EventArgs) Handles FlatButton1.MouseHover
    Button_Height.Enabled = True
    Button_Height.Start()
End Sub

现在,如您在 Button_Height_Tick 子项中看到的那样,代码将按钮的高度更改为 63 ,但是代码运行后,高度按钮已更改。

这里有一些照片,以防万一我解释不清。

What my original button looks like

What I want it to do

What it's doing (going up in size vertically going down, when I want it to go up)

如果您不理解此问题,请在下面

发表评论。

2 个答案:

答案 0 :(得分:1)

您需要更改“顶部”位置,而且我注意到您有一个计时器,然后进入循环。在您的示例中,不需要计时器。

我将使用计时器作为示例,希望您能理解它并可以将其用于所需的内容。我已经将“悬停”更改为“输入”和“离开”。

如果太慢,只需更改增量量即可。

    Dim ChangeHeight As Boolean = False

Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
    If ChangeHeight Then
        FlatButton1.Height += 2
        FlatButton1.Top -= 2
        If FlatButton1.Height < 63 Then Exit Sub
        FlatButton1.Height = 63
        Timer1.Enabled = False
    Else
        FlatButton1.Height -= 2
        FlatButton1.Top += 2
        If FlatButton1.Height > 31 Then Exit Sub
        FlatButton1.Height = 31
        Timer1.Enabled = False
    End If
End Sub

Private Sub FlatButton1_MouseEnter(sender As Object, e As EventArgs) Handles FlatButton1.MouseEnter
    ChangeHeight = True
    If Timer1.Enabled Then Exit Sub
    Timer1.Enabled = True
    Timer1.Start()
End Sub

Private Sub FlatButton1_MouseLeave(sender As Object, e As EventArgs) Handles FlatButton1.MouseLeave
    ChangeHeight = False
    If Timer1.Enabled Then Exit Sub
    Timer1.Enabled = True
    Timer1.Start()
End Sub

答案 1 :(得分:1)

您好,欢迎来到StackOverflow。我举了一个小例子来说明如何实现您想要的。

代码:

Public Class Form1
Dim buttonXCoordinate As Integer
Dim buttonYCoordinate As Integer
Dim buttonOriginalHeight As Integer
Dim buttonOriginalLocation As Point

Private Sub GetButtonCoordinate()
    buttonXCoordinate = testBtn.Left
    buttonYCoordinate = testBtn.Top
End Sub

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    buttonOriginalHeight = testBtn.Height
    buttonOriginalLocation = testBtn.Location
    GetButtonCoordinate()
End Sub

Private Sub testBtn_MouseEnter(ByVal sender As Object, ByVal e As System.EventArgs) Handles testBtn.MouseEnter
    Dim buttonLocation As Point = Nothing
    GetButtonCoordinate()
    buttonLocation.X += buttonXCoordinate
    buttonLocation.Y += buttonYCoordinate - buttonOriginalHeight
    testBtn.Height += buttonOriginalHeight
    testBtn.Location = buttonLocation
End Sub

Private Sub testBtn_MouseLeave(ByVal sender As Object, ByVal e As System.EventArgs) Handles testBtn.MouseLeave
    testBtn.Height = buttonOriginalHeight
    testBtn.Location = buttonOriginalLocation
End Sub
End Class

我确实做得很快,但是足以让您知道如何实现目标。

在我的示例中,有一个名为testBtn的按钮,当您用鼠标翻过按钮时,按钮的高度会增加,并且它当您将鼠标移出时,将返回正常