【问题标题】:Keep button color unchanged when it is disabled禁用时保持按钮颜色不变
【发布时间】:2013-03-14 16:15:54
【问题描述】:

当我禁用它时,我想保持按钮颜色不会变为灰色。我使用图像作为背景颜色,并将ForeColor 设置为白色。当按钮被禁用时,我想保持原样,而不是将其更改为灰色。我的代码是:

Private Sub btnItemNonTaxable_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnItemNonTaxable.Click
    If Shift = 0 Then
        MessageBox2("Please Begin the Shift before you start the transaction.", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
        Exit Sub
    End If
    txtNonInventoryQuantity.Text = "1"
    pnlOpenItem.Visible = True
    LabelNonInventory.Text = "Non-Inventory Non-Taxable"
    isOpenItem = True
    chkTax1.Visible = False
    chkTax1.Checked = False
    txtPrice.Focus()
    btnCashDrop.Enabled = False
    If Not btnCashDrop.Enabled Then
        btnCashDrop.Image = My.Resources.small_green
btnCash.ForeColor = Color.White
    End If

【问题讨论】:

    标签: vb.net winforms button


    【解决方案1】:

    实际上我们必须手动将buttonredrawtext 与所需的color,在其enable 模式更改期间。试试下面的代码来满足你的需要。

    [注意:IDE测试的代码]

    Private Sub Button1_EnabledChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.EnabledChanged
            Button1.ForeColor = If(sender.enabled = False, Color.Blue, Color.Red)
    End Sub
    
    Private Sub Button1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Button1.Paint
    
        Dim btn = DirectCast(sender, Button)
        Dim drawBrush = New SolidBrush(btn.ForeColor)
        Dim sf = New StringFormat With {.Alignment = StringAlignment.Center, .LineAlignment = StringAlignment.Center}
        Button1.Text = String.Empty
        e.Graphics.DrawString("Button1", btn.Font, drawBrush, e.ClipRectangle, sf)
        drawBrush.Dispose()
        sf.Dispose()
    
    End Sub
    

    【讨论】:

    • 文本看起来已启用,但我怎样才能使按钮图像看起来像已启用
    猜你喜欢
    • 1970-01-01
    • 2014-11-17
    • 2013-10-24
    • 1970-01-01
    • 2013-09-14
    • 1970-01-01
    • 2014-11-06
    • 2018-04-07
    • 2022-09-26
    相关资源
    最近更新 更多