Usuário com melhor resposta
Colocar tooltip no combobox !!!

Pergunta
-
Bom dia galera...
O meu programa possui um combobox com 5 itens. 3 deles dão pra ser lidos normalmente. E os outros dois são muito grandes e não dá pro usuário ler a opção toda. Já aumentei o tamanho do "DropDownWidth" mas ficou muito esquisito pois o texto fica enorme. Gostaria de colocar a tooltip no combobox mas não sei como.
A LINGUAGEM É VISUAL BASIC !!!!!
Alguém aí pode me ajudar ?
Obrigado !!!!
- Movido Robson William SilvaModerator segunda-feira, 3 de abril de 2017 19:56
Respostas
-
Boa tarde Antero.
Testei seu código e achei sensacional, nunca vislumbrei esta possibilidade, porém aqui (VS 2010) aprsentou um inconveniente:
Após sair ou selecionar um item da combobox, o último tooltip continua exibido, não é apagado.
Completei seu código assim:
Private Sub ComboBox1_SelectionChangeCommitted(sender As Object, e As System.EventArgs) Handles ComboBox1.SelectionChangeCommitted
_toolTip.RemoveAll()
End SubMARIANO1776
- Sugerido como Resposta Mariano1776 domingo, 26 de novembro de 2017 22:45
- Marcado como Resposta AndreAlvesLimaModerator segunda-feira, 27 de novembro de 2017 10:09
-
Fiz um pequeno teste aqui com um control chamado comboBox1:
Public Class Form1 Dim ReadOnly _toolTip As New ToolTip() Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load _toolTip.AutoPopDelay = 0 _toolTip.InitialDelay = 0 _toolTip.ReshowDelay = 0 _toolTip.ShowAlways = True ComboBox1.DrawMode = DrawMode.OwnerDrawFixed Dim source(0 To 5) As String source(0) = "Teste de Combo 1 - Texto muito Grande" source(1) = "Teste de Combo 2 - Texto muito Grande" source(2) = "Teste de Combo 3 - Texto muito Grande" source(3) = "Teste de Combo 4 - Texto muito Grande" source(4) = "Teste de Combo 5 - Texto muito Grande" source(5) = "Teste de Combo 6 - Texto muito Grande" comboBox1.DataSource = source End Sub Private Sub ComboBox1_DrawItem(sender As Object, e As DrawItemEventArgs) Handles ComboBox1.DrawItem e.DrawBackground() Dim text As String = comboBox1.GetItemText(comboBox1.Items(e.Index)) Using br As New SolidBrush(e.ForeColor) e.Graphics.DrawString(text, e.Font, br, e.Bounds) End Using If (e.State And DrawItemState.Selected) = DrawItemState.Selected AndAlso comboBox1.DroppedDown Then _toolTip.Show(text, comboBox1, e.Bounds.Right, e.Bounds.Bottom + 4) End If e.DrawFocusRectangle() End Sub End Class
Att,
Antero Marques
______________________________________________________________________________
Se a resposta for útil, marque como útil, se respondeu totalmente sua dúvida, marque como resposta. O Fórum MSDN é utilizado também como base de conhecimento, então é responsabilidade de todos mantê-lo organizado e funcional.- Editado Antero Marques quinta-feira, 9 de novembro de 2017 18:02
- Sugerido como Resposta AndreAlvesLimaModerator segunda-feira, 13 de novembro de 2017 09:34
- Marcado como Resposta AndreAlvesLimaModerator segunda-feira, 27 de novembro de 2017 10:09
Todas as Respostas
-
Bom dia galera...
O meu programa possui um combobox com 5 itens. 3 deles dão pra ser lidos normalmente. E os outros dois são muito grandes e não dá pro usuário ler a opção toda. Já aumentei o tamanho do "DropDownWidth" mas ficou muito esquisito pois o texto fica enorme. Gostaria de colocar a tooltip no combobox mas não sei como.
A LINGUAGEM É VISUAL BASIC !!!!!
Alguém aí pode me ajudar ?
Obrigado !!!!
Não entendi muito bem, voce quer o tool type para que ??
-
Fiz um pequeno teste aqui com um control chamado comboBox1:
Public Class Form1 Dim ReadOnly _toolTip As New ToolTip() Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load _toolTip.AutoPopDelay = 0 _toolTip.InitialDelay = 0 _toolTip.ReshowDelay = 0 _toolTip.ShowAlways = True ComboBox1.DrawMode = DrawMode.OwnerDrawFixed Dim source(0 To 5) As String source(0) = "Teste de Combo 1 - Texto muito Grande" source(1) = "Teste de Combo 2 - Texto muito Grande" source(2) = "Teste de Combo 3 - Texto muito Grande" source(3) = "Teste de Combo 4 - Texto muito Grande" source(4) = "Teste de Combo 5 - Texto muito Grande" source(5) = "Teste de Combo 6 - Texto muito Grande" comboBox1.DataSource = source End Sub Private Sub ComboBox1_DrawItem(sender As Object, e As DrawItemEventArgs) Handles ComboBox1.DrawItem e.DrawBackground() Dim text As String = comboBox1.GetItemText(comboBox1.Items(e.Index)) Using br As New SolidBrush(e.ForeColor) e.Graphics.DrawString(text, e.Font, br, e.Bounds) End Using If (e.State And DrawItemState.Selected) = DrawItemState.Selected AndAlso comboBox1.DroppedDown Then _toolTip.Show(text, comboBox1, e.Bounds.Right, e.Bounds.Bottom + 4) End If e.DrawFocusRectangle() End Sub End Class
Att,
Antero Marques
______________________________________________________________________________
Se a resposta for útil, marque como útil, se respondeu totalmente sua dúvida, marque como resposta. O Fórum MSDN é utilizado também como base de conhecimento, então é responsabilidade de todos mantê-lo organizado e funcional.- Editado Antero Marques quinta-feira, 9 de novembro de 2017 18:02
- Sugerido como Resposta AndreAlvesLimaModerator segunda-feira, 13 de novembro de 2017 09:34
- Marcado como Resposta AndreAlvesLimaModerator segunda-feira, 27 de novembro de 2017 10:09
-
-
Boa tarde Antero.
Testei seu código e achei sensacional, nunca vislumbrei esta possibilidade, porém aqui (VS 2010) aprsentou um inconveniente:
Após sair ou selecionar um item da combobox, o último tooltip continua exibido, não é apagado.
Completei seu código assim:
Private Sub ComboBox1_SelectionChangeCommitted(sender As Object, e As System.EventArgs) Handles ComboBox1.SelectionChangeCommitted
_toolTip.RemoveAll()
End SubMARIANO1776
- Sugerido como Resposta Mariano1776 domingo, 26 de novembro de 2017 22:45
- Marcado como Resposta AndreAlvesLimaModerator segunda-feira, 27 de novembro de 2017 10:09
-
Que bom Mariano. A intenção é sempre melhorar o código de forma colaborativa.
Att,
Antero Marques
______________________________________________________________________________
Se a resposta for útil, marque como útil, se respondeu totalmente sua dúvida, marque como resposta. O Fórum MSDN é utilizado também como base de conhecimento, então é responsabilidade de todos mantê-lo organizado e funcional.- Editado Antero Marques domingo, 26 de novembro de 2017 20:13