COMO MUDAR FORECOLOR DE UM TEXTBOX [Ô]DISABLED[Ô]

GRIFFON17 26/07/2013 11:59:34
#426562
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 ?
PERCIFILHO 26/07/2013 16:56:12
#426588
Resposta escolhida
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.
GRIFFON17 01/08/2013 14:54:28
#426893
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 ?
PERCIFILHO 01/08/2013 15:02:21
#426895
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.
Tópico encerrado , respostas não são mais permitidas