1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

Problema muito estranho VB.NET

Discussão em 'Programação' iniciada por ricmrq, 5 de Novembro de 2008. (Respostas: 8; Visualizações: 756)

  1. ricmrq

    ricmrq Power Member

    ola pessoal,

    fiz uma function e fiz um ciclo FOR para puder realizar a function varias vezes. algo como isto:

    Código:
    For t=0 to 49
         comboBox.items.add(FunctionA())
    Next
    o problema é que os valores seguintes ao 1º valor, são iguais de 2 em 2. perceberam?
    por exemplo:

    (valores na comboBox)
    aaa
    bbb
    bbb
    ccc
    ccc
    ddd
    ddd

    repetem-se... :confused::confused:
    fiz um breakpoint e se verificar 1 a 1, os valores variam (que é esse o objectivo na function). mas sem breakpoints os valores repetem-se de 2 em 2.

    what the ****?! ajudem-me por favor

    cumps

    ah! e na function crio novas variaveis. assim sendo, como se repetem???
     
  2. fLaSh_CF

    fLaSh_CF Banido

    Sim por o que percebi, penso que o teu problema tem haver com o tipo de dados de estás a introduzir na combo..

    A combox do VB.NET é baseado em sistema de "HasTable", ou seja se pretendes adicionar valores repetidos tens de forçar a o Imput de dados sejam do tipo String..

    Por o que vi, calculo que a tua função "FunctionA" não está a gerar valores do tipo String..

    Tenta com esta forma:
    Compr.
     
  3. ricmrq

    ricmrq Power Member

    ja inseri numa combo e numa listview. e a funçao gera strings.
     
  4. Ruben_Barbosa

    Ruben_Barbosa Power Member

    Fucntiona() = a que ???
     
  5. ricmrq

    ricmrq Power Member

    tem bastante código :P por isso não vou por aqui.

    mas no fundo a função cria strings e devolve-as.
    e antes de criar a string, tenho-a declarada como string. portanto, sempre que entra na função, não pode repetir!! :mad:

    EDIT:
    pessoal voltei a "correr" a função sempre que clico num botao. ou seja, gero uma string 1 a 1. ja tinha feitocom breakpoints e funcionou. acham que terá alguma coisa a ver com o tempo que são criadas as strings.
    como a função está num ciclo FOR talvez seja rápido demais e gere a mesma string. ou será esta teoria mto estupida?? :P :P
     
    Última edição: 6 de Novembro de 2008
  6. ricmrq

    ricmrq Power Member

    .
     
    Última edição: 6 de Novembro de 2008
  7. joao.miguel

    joao.miguel Power Member

    Experimenta limpar a combobox antes.
    Depois disso, o problema deverá estar no teu código. Se conseguires fazer um exemplo para mostrar era mais fácil porque um ciclo não interfere com o que estás a fazer na função.
    E a tua última teoria não é valida :P
     
  8. SoundSurfer

    SoundSurfer Power Member

    Isso é ASP.NET?

    É que se for, ao fazer load esses valores são guardados no ViewState (por omissão) e ao carregar num botão (postback) a combobox é preenchida automaticamente com os valores que tinha antes.

    Como já foi sugerido, faz .Items.Clear() à combobox antes de a preencheres.
     
  9. ricmrq

    ricmrq Power Member

    ja fiz comboBox.items.clear. agora estou a usar uma listview.

    Código:
    ListEmpregados.Items.Clear()
            Dim t As Integer = 0
            While t <> 49
                Randomize()
                ListEmpregados.Items.Add(GerarEmpregados)
                ListEmpregados.Refresh()
                t = t + 1
            End While
    coloquei o código acima referido no evento do Click num botão. se colocar o código no Load do form, o problema aparece enquanto no evento do botão o problema resolve-se. já estive a analisar a função e não vejo qualquer problema. e se o problema aparece num evento e não noutro então a função tem que estar correcta...

    Código:
    Public Function GerarEmpregados()
            Dim nR As New Random
            Randomize()
            Dim n As Byte = nR.Next(3, 5)
            Dim vec(n - 1) As String
    
           'acede à base de dados
           (...)
    
            Try
                Dim varTemp As String = ""
                For t = 0 To n - 1
                    varTemp = varTemp & " " & var(t)
                Next
                varTemp = Trim(varTemp )
                Return varTemp 
            Catch ex As Exception
                MsgBox(ex.Message, MsgBoxStyle.Critical)
            End Try
        End Function
     
    Última edição: 6 de Novembro de 2008

Partilhar esta Página