VB.NET | Propriedade Enable

diog0silva

Power Member
Boas.

Tou a usar uma RichTextBox. Quando ponho a sua propriedade Enable para False, a cor de fundo da caixa fica a cinzento. Não há nenhuma maneira de continuar branco, como as textbox?
 
Pois, mas a propriedade ReadOnly, apesar de nao deixar alterar, deixa seleccionar o texto, o que em termos estéticos não gosto muito de ver lol :\ Ninguém conhece outra solução?
 
Sempre podes esconder a RTB, criar um label em Runtime (ou ter previamente um invisível na mesma localização) e quando carregas no tal botao ou wtv, a RTB desaparece e aparece a label.
Com a label já ninguém selecciona nada.
 
Enquanto nao aparecer solução melhor podes tentar isto:

Código:
Sub RichTextBox1_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs ) Handles RichTextBox1.MouseUp
	 
	If RichTextBox1.ReadOnly  Then
		RichTextBox1.SelectionStart = 0
		RichTextBox1.SelectionLength = 0
		Me.Focus()
	End If

End Sub

Sub RichTextBox1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles RichTextBox1.MouseDown 
	 
	If RichTextBox1.ReadOnly  Then
		RichTextBox1.SelectionStart = 0
		RichTextBox1.SelectionLength = 0
		Me.Focus()
	End If

End Sub

Sub RichTextBox1_GotFocus(ByVal sender As Object, ByVal e As EventArgs ) Handles RichTextBox1.GotFocus 
	 
	If RichTextBox1.ReadOnly  Then
		Me.Focus()
	End If
	
End Sub

Quando quiseres fazer disable basta passares a ReadOnly. Isto nao e perfeito, e apenas um conjunto de hacks... De vez em quando ainda se nota o cursor a piscar quando se anda para la a clicar.

Se quiseres algo visualmente perfeito usa a solução do ribeiro55. Uma label invisivel OnTop da tua RTB que fica visivel/invisivel quando fazes o Enable/Disable da RTB
 
Última edição:
Eu não sei se percebi bem a solução do ribeiro55.

A RTB que estou a usar está a ir buscar o valor a uma base de dados, a um campo de Observações, daí eu querer usar uma RTB e não uma TextBox normal. No evento Load do form, faço a conexão à base de dados, passo os dados da base de dados para os campos do formulário (umas quantas TextBox e uma RichTextBox), e tranco os campos. Como referi na minha mensagem anterior, o problema é que a propriedade Enable da RichTextBox, ao contrário das TextBox, deixa o fundo da caixa em cinzento :\

O que eu percebi daquilo que o ribeiro55 disse é que:
No evento Load, a label fica vísivel e a RTB fica invisivel. Quando carrego no botão "Editar" (que destranca os campos), a label fica invisivel e a RTB fica visivel. A minha questão agora é que, a ideia de usar uma RTB é que o texto do campo, caso ultrapasse uma linha, passa para a linha de baixo. Usando uma label, o texto não passa para a linha de baixo pois não?
 
A RTB que estou a usar está a ir buscar o valor a uma base de dados, a um campo de Observações, daí eu querer usar uma RTB e não uma TextBox normal.


Agora estou perdido! Usas uma RichTextBox porque queres mais espaço para escrever ?

Usa antes uma textbox e define a propriedade Multiline como True

Me.TextBox1.Multiline = True
 
Agora estou perdido! Usas uma RichTextBox porque queres mais espaço para escrever ?

Usa antes uma textbox e define a propriedade Multiline como True

Me.TextBox1.Multiline = True

jpaulino, mas tipo, dessa maneira, só passa para a linha de baixo ao carregar no enter.

Se nunca carregar no enter, ele continua sempre a escrever para a frente e não muda de linha quando chega ao final do espaço.
 
Back
Topo