Iso 0 Denunciar post Postado Maio 22, 2006 Preciso selecionar mais de um item num combobox, por isso pensei em colocar checkbox dentro do combobox, podendo checar quantos items eu quiserAchei um exemplo de como fazer isso mas só no VB6, assim:------------------------------------------------------------------------------Option Explicit Private Const EC_LEFTMARGIN = &H1Private Const EC_RIGHTMARGIN = &H2Private Const EC_USEFONTINFO = &HFFFF&Private Const EM_SETMARGINS = &HD3&Private Const EM_GETMARGINS = &HD4&Private Declare Function FindWindowEx Lib "user32" _ Alias "FindWindowExA" _ (ByVal hwndParent As Long, ByVal hwndChildAfter As Long, _ ByVal lpszClass As String, _ ByVal lpszWindow As String) As LongPrivate Declare Function SendMessageLong Lib "user32" _ Alias "SendMessageA" _ (ByVal hwnd As Long, ByVal wMsg As Long, _ ByVal wParam As Long, ByVal lParam As Long) As LongPrivate Sub AddCheckToCombo( _ ByRef chkThis As CheckBox, _ ByRef cboThis As ComboBox _ ) Dim lhWnd As Long Dim lMargin As Long lhWnd = FindWindowEx(cboThis.hwnd, 0, "EDIT", vbNullString) If (lhWnd <> 0) Then lMargin = chkThis.Width \ Screen.TwipsPerPixelX + 2 SendMessageLong lhWnd, EM_SETMARGINS, EC_LEFTMARGIN, lMargin chkThis.BackColor = cboThis.BackColor chkThis.Move _ cboThis.Left + 3 * Screen.TwipsPerPixelX, _ cboThis.Top + 2 * Screen.TwipsPerPixelY, _ chkThis.Width, _ cboThis.Height - 4 * Screen.TwipsPerPixelY chkThis.ZOrder End IfEnd SubPrivate Sub Form_Load() AddCheckToCombo Check1, Combo1 Dim i As Long For i = 1 To 20 Combo1.AddItem "Test" & i Next iEnd Sub-----------------------------------------------------------------------------------como fazer isso no VB Net? Compartilhar este post Link para o post Compartilhar em outros sites
Graymalkin 0 Denunciar post Postado Maio 23, 2006 Não seria mais simples (e também mais óbvio, já que nunca vi uma combobox com checkboxes), utilizar uma ListView (que já permite colocar checkboxes nos itens)?Abraços,Graymalkin Compartilhar este post Link para o post Compartilhar em outros sites
Iso 0 Denunciar post Postado Maio 23, 2006 existe checkbox em combobox sim, achei varios exemplos em outras linguagens...meu problema não se resolve com listbox pq quero q se comporte como um combobox... Compartilhar este post Link para o post Compartilhar em outros sites
Graymalkin 0 Denunciar post Postado Maio 23, 2006 existe checkbox em combobox sim, achei varios exemplos em outras linguagens...Eu não disse que não existe, só que nunca vi (você pode citar algum programa em que se possa ver isso, como um Word, Excel, CorelDraw, etc.?)meu problema não se resolve com listbox pq quero q se comporte como um combobox...Eu não falei ListBox e sim ListView, que é parecida mas não igual. Mas, pense comigo, se o propósito de uma combobox é mostrar vários itens para que apenas *um* fique selecionado (que é o que você realmente *vê*, quando fecha a caixa), pra quê marcar os itens se apenas *um* vai ficar visível após a seleção? Já em uma ListView (ou mesmo em uma ListBox) você *vê* vários itens e pode marcá-los também. A diferença é que depois de marcar você vai continuar vendo *vários* itens, e não apenas um (como é o caso da combo). Fazendo uma analogia, é como você querer cortar um papel com uma faca ao invés de uma tesoura, ou seja, dá pra fazer, mas não é o adequado. Pelo menos não do meu ponto de vista.Abraços,Graymalkin Compartilhar este post Link para o post Compartilhar em outros sites
Iso 0 Denunciar post Postado Maio 30, 2006 desculpe, não quis ser grossaé q no exemplo q vi, os itens q eu checava ficavam todos entre virgulas no combo quando ele está fechadoé q quero q fique fechado, não quero q fique uma caixa aberta, um listview fica fechado se eu quiser? Compartilhar este post Link para o post Compartilhar em outros sites
Graymalkin 0 Denunciar post Postado Maio 31, 2006 desculpe, não quis ser grossaE você não foi... portanto não há porque se desculpar. :)é q no exemplo q vi, os itens q eu checava ficavam todos entre virgulas no combo quando ele está fechadoHummm, entendo. Bom, você pode tentar portar aquele código ali para .NET, mas não sei se ele vai ser válido, uma vez que os controles (ComboBox e CheckBox) podem ser diferentes dos esperados. Ou você poderia tentar fazer isso através do evento DrawItem, que lhe permite definir a forma como cada um dos itens será "desenhado".é q quero q fique fechado, não quero q fique uma caixa aberta, um listview fica fechado se eu quiser?Sim, isso é possível de se fazer. Coloque a seguinte classe aí no seu projeto (pode ser dentro da classe do form):Public Class ListViewFechável Inherits ListView Private Const ABERTO = 200 Private Const FECHADO = 20 Public Sub New() MyBase.New() Me.Scrollable = False Me.CheckBoxes = True Me.View = Windows.Forms.View.Details Me.Width = 150 Me.Columns.Add("Opções", Me.Width, HorizontalAlignment.Left) If Me.Focused Then Me.Height = ABERTO Else Me.Height = FECHADO End If End Sub Protected Overrides Sub OnGotFocus(ByVal e As EventArgs) Me.Height = ABERTO MyBase.OnGotFocus(e) End Sub Protected Overrides Sub OnLostFocus(ByVal e As EventArgs) Dim s As String = "" For Each it As ListViewItem In Me.CheckedItems s = s & it.Text & ", " Next If s.Length = 0 Then s = "Opções" Else s = s.Substring(0, s.Length - 2) End If Me.Columns(0).Text = s Me.Height = FECHADO MyBase.OnLostFocus(e) End Sub End ClassDepois, faça o seguinte para utilizá-la (pode ser no evento Load do form):Dim m As New ListViewFechável() m.Location = New Point(20, 20) m.Show() Me.Controls.Add(m) For i As Integer = 1 To 10 m.Items.Add(i.ToString()) NextE pronto, está aí a sua ListView que abre e fecha quando ganha e perde o foco, além de mostrar os itens selecionados quando está fechada (separados por vírgula).Certo? ;)Graymalkin Compartilhar este post Link para o post Compartilhar em outros sites
Iso 0 Denunciar post Postado Junho 5, 2006 hum... parece legal... vou tentarestou um pouco ocupada com outras coisas por isso estou demorando pra respondervaleu Compartilhar este post Link para o post Compartilhar em outros sites