2013-03-25 31 views
1

我想保持按钮颜色变灰时,我禁用它。我使用背景颜色的图像,并将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 

回答

3

实际上,我们必须手动redrawbutton与在其enable模式所需要的color,的text得到改变。试试下面的代码来实现你的需要。

[注:代码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 
+0

文字看起来允许的,但我怎样才能也使按钮图片看起来像是被启用 – 2013-03-25 13:35:29