COMO MUDAR FORECOLOR DE UM TEXTBOX [Ô]DISABLED[Ô]
O tÃtulo diz tudo, mas considerem:
- Tenho uma textbox com a propriedade Enabled=False, mas isso faz com que o texto fique com a Forecolor Cinza, quero mudar ela para Preto.
- Não posso usar readonly, pois essa propriedade ainda permite que a textbox seja selecionada com tab.
- Preciso mudar a FORECOLOR, a backcolor eu já consegui
Alguém sabe como fazer ?
- Tenho uma textbox com a propriedade Enabled=False, mas isso faz com que o texto fique com a Forecolor Cinza, quero mudar ela para Preto.
- Não posso usar readonly, pois essa propriedade ainda permite que a textbox seja selecionada com tab.
- Preciso mudar a FORECOLOR, a backcolor eu já consegui
Alguém sabe como fazer ?
Cara, eu fiz alguns [Ô]trambiques[Ô] para conseguir esse efeito:
Criei uma rotina no módulo:
Public Sub DesabilitaTextBox(ByVal controle As TextBox)
controle.ReadOnly = True
controle.BackColor = Color.Gainsboro
controle.ForeColor = Color.Black
End Sub
Depois, no formulário, os eventos:
Private Sub TxtCodigo_Enter(ByVal sender As Object, ByVal e As System.EventArgs) Handles TxtCodigo.Enter
If TxtCodigo.BackColor = Color.Gainsboro Then TxtId.Focus()
End Sub
Private Sub TxtCodigo_MouseClick(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles TxtCodigo.MouseClick
If TxtCodigo.BackColor = Color.Gainsboro Then TxtId.Focus()
End Sub
Esses códigos nos eventos Enter e MouseClick são responsáveis por fazer que quando o usuário clicar no controle, o foco vai para um outro controle (no caso o TxtId) que deve estar por baixo de outro controle (Send to Back) e tem que ser Visible=True.
Assim, dá a impressão de que o controle está Enabled=False, porém não está.
Testa aà e qualquer coisa, na segunda eu explico melhor.
Até mais.
Criei uma rotina no módulo:
Public Sub DesabilitaTextBox(ByVal controle As TextBox)
controle.ReadOnly = True
controle.BackColor = Color.Gainsboro
controle.ForeColor = Color.Black
End Sub
Depois, no formulário, os eventos:
Private Sub TxtCodigo_Enter(ByVal sender As Object, ByVal e As System.EventArgs) Handles TxtCodigo.Enter
If TxtCodigo.BackColor = Color.Gainsboro Then TxtId.Focus()
End Sub
Private Sub TxtCodigo_MouseClick(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles TxtCodigo.MouseClick
If TxtCodigo.BackColor = Color.Gainsboro Then TxtId.Focus()
End Sub
Esses códigos nos eventos Enter e MouseClick são responsáveis por fazer que quando o usuário clicar no controle, o foco vai para um outro controle (no caso o TxtId) que deve estar por baixo de outro controle (Send to Back) e tem que ser Visible=True.
Assim, dá a impressão de que o controle está Enabled=False, porém não está.
Testa aà e qualquer coisa, na segunda eu explico melhor.
Até mais.
PERCIFILHO, entendi seu código, realmente é um jeito de [Ô]driblar[Ô] o sistema
Teria como eu cancelar o focus no TxtCodigo sem ter que mudar ele para outra textbox ?
Teria como eu cancelar o focus no TxtCodigo sem ter que mudar ele para outra textbox ?
Creio que não, porque se você não [Ô]jogar[Ô] o foco para outra textbox, o foco vai ficar no txtcodigo, aÃ, não se tem a impressão de que a txtcodigo está desabilitada. Pois sessa maneira que eu te passei, toda vez que o foco estiver no controle txtcodigo, (mesmo que você apenas clique com o mouse no controle), automaticamente o foco passa para outro controle, então o cursor do mouse nem [Ô]para[Ô] no txtcodigo. A impressão que se tem é exatamente igual a um controle desabilitado.
Até mais.
Até mais.
Tópico encerrado , respostas não são mais permitidas