Problema muito estranho VB.NET

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???
 
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:
For t=0 to 49
comboBox.items.add(CStr(FunctionA()))
Next
Compr.
 
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:
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
 
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.
 
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:
Back
Topo