READONLY - COMBOBOX

ERLANMG 25/02/2013 16:03:17
#419620
Caros colegas,

COMBOBOX não tem a opção ReadOnly, como devo proceder para o deixar-lo somente leitura.

Desde já agradeço pela atenção.

Grato

OCELOT 25/02/2013 16:08:28
#419621
Você quer que não possa digitar no ComboBox ou que não possa mudar o item selecionado? Se for para não deixar mudar o item selecionado qual o motivo de você querer usar o ComboBox?
ALEVALE 25/02/2013 16:20:36
#419623
Tente colocar na propriedades DropDownStyle=DropDownList
ERLANMG 25/02/2013 16:23:53
#419625
Não possa mudar o item, por exemplo na tela de cadastro de clientes, tenho a opção consultar, como é apenas consulta uso a sub rotina abaixo para deixar os campos somente leitura, mas o combobox não sei como deixar somente leitura. No vb 6 usava DRAGMODE e TABSTOP.

Public Sub SomenteLeitura(ByVal controlP As Control)

Dim ctl As Control

For Each ctl In controlP.Controls

If TypeOf ctl Is TextBox Then

DirectCast(ctl, TextBox).ReadOnly = True

ElseIf ctl.Controls.Count > 0 Then

SomenteLeitura(ctl)

End If

If TypeOf ctl Is MaskedTextBox Then

DirectCast(ctl, MaskedTextBox).ReadOnly = True

ElseIf ctl.Controls.Count > 0 Then

SomenteLeitura(ctl)

End If
If TypeOf ctl Is ComboBox Then

DirectCast(ctl, ComboBox).Enabled = False

ElseIf ctl.Controls.Count > 0 Then

SomenteLeitura(ctl)

End If

Next
End Sub
PERCIFILHO 26/02/2013 07:59:33
#419632
Resposta escolhida
Pode não ser a melhor alternativa, mas existe essa aqui:
Se na sua tela tiver um GroupBox ou uma Label, onde nunca fiquem Enabled=False, você coloca os códigos abaixo no formulário, assim quando você clicar na ComboBox, o foco será transferido para outro controle, no exemplo, uma Label. Dessa forma, você [Ô]engana[Ô] o foco.

Private Sub ComboBox1_Enter(ByVal sender As Object, ByVal e As System.EventArgs) Handles ComboBox1.Enter
Label1.Focus()
End Sub
Private Sub ComboBox1_MouseClick(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles ComboBox1.MouseClick
Label1.Focus()
End Sub
Private Sub ComboBox1_MouseDoubleClick(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles ComboBox1.MouseDoubleClick
Label1.Focus()
End Sub

Veja se te ajuda.

Até mais.
ERLANMG 26/02/2013 08:11:04
#419633
Percifilho, bom dia!

Fiz como voce disse e funcionou certinho.

Muito obrigado.



Tópico encerrado , respostas não são mais permitidas