READONLY - COMBOBOX
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
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
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?
Tente colocar na propriedades DropDownStyle=DropDownList
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
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
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.
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.
Percifilho, bom dia!
Fiz como voce disse e funcionou certinho.
Muito obrigado.
Fiz como voce disse e funcionou certinho.
Muito obrigado.
Tópico encerrado , respostas não são mais permitidas