DATAGRID VIEW EM TEMPO DE EXECUCAO

TERABYTES 22/04/2011 23:51:38
#372213
Galera boa noite,

Estou usando o Visual Studio 2010. o Projeto é em Visual Basic.

Eu fiz um esquema que cria em um [Ô]TabControl[Ô] com algumas abas (tabs) com nomes retirados de uma lista, e dentro de cada Aba é criado uma datagridview com colunas e tudo. A única coisa que eu preciso [Ô]desenhar[Ô] na janela é uma TabControl zerada (sem abas).

Crio tudo com o código abaixo, que faz as Tabs e as datagridviews.

[ô]//Começo
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim nome As String
Dim Funcionarios() As String = {[Ô]André[Ô], [Ô]Edson[Ô], [Ô]Franciele[Ô], [Ô]Júlia[Ô], [Ô]Carol[Ô]}
SuspendLayout()
For Each nome In Funcionarios
Dim dg = New System.Windows.Forms.DataGridView
Dim ColFile = New System.Windows.Forms.DataGridViewTextBoxColumn
Dim ColVd = New System.Windows.Forms.DataGridViewTextBoxColumn
Dim ColVDec = New System.Windows.Forms.DataGridViewTextBoxColumn
Dim ColMP = New System.Windows.Forms.DataGridViewTextBoxColumn
Dim ColML = New System.Windows.Forms.DataGridViewTextBoxColumn
Dim aba = New System.Windows.Forms.TabPage

dg.Dock = System.Windows.Forms.DockStyle.Fill
dg.Name = ([Ô]dg[Ô] + nome)
dg.AutoSizeColumnsMode = System.Windows.Forms.DataGridViewAutoSizeColumnsMode.DisplayedCells
dg.Columns.AddRange(New System.Windows.Forms.DataGridViewColumn() {ColFile, ColVd, ColVDec, ColMP, ColML})

ColFile.HeaderText = [Ô]FILE[Ô]
ColFile.Name = [Ô]ColFile[Ô] + nome
ColVd.HeaderText = [Ô]VENDA DIRETA[Ô]
ColVd.Name = [Ô]ColVd[Ô] + nome
ColVDec.HeaderText = [Ô]VENDA DESC.[Ô]
ColVDec.Name = [Ô]ColVDec[Ô] + nome
ColMP.HeaderText = [Ô]MASTER\PARQUES[Ô]
ColMP.Name = [Ô]ColMP[Ô] + nome
ColML.HeaderText = [Ô]MARGEM DE LUCRO[Ô]
ColML.Name = [Ô]ColML[Ô] + nome

aba.Name = ([Ô]aba[Ô] + nome)
aba.TabIndex = TabControl1.TabCount
aba.Text = (nome)
aba.Controls.Add(dg)
TabControl1.Controls.Add(aba)
Next
ResumeLayout(False)
End Sub
[ô]\\Fim

Até ai tudo bem, é criado tudo certinho e bonitinho. Só que agora eu preciso somar os valores de uma coluna da datagridview com a rotina abaixo.

[ô]//Começo
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim soma As Integer
For i = 0 To DataGridView1.Rows.Count - 1
soma = soma + DataGridView1.Rows(i).Cells(0).Value
Next
LabTotalVD.Text = soma
End Sub
[ô]\\Fim

Até funciona se eu criar a datagridview em tempo de design com o nome padrão [Ô]DataGridView1[Ô], mas foi criado em tempo de execução, e eu acho e o nome dela deve ter ficado assim ([Ô]dg[Ô] + nome) dgEdson.

Alguém sabe o que eu tenho que fazer para acertar essa soma?

Estou colocando o projeto em anexo, caso alguém queira me ajuda ou queira o código de criar as tabs...
RODRIGOFERRO 23/04/2011 03:36:53
#372218
Resposta escolhida
Modifiquei seu Projeto veja como ficou e me diga se esta do seu agrado...

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

[ô]Sub para passar o nome das DataGridView

Dim Nomedg As String

For Each Me.nome In Funcionarios

Nomedg = [Ô]dg[Ô] + nome
FindControl(TabControl1, Nomedg)

Next

End Sub

Public Sub FindControl(parent As System.Windows.Forms.TabControl, NomeControle As String)

[ô]Sub que percorre os Controles
Dim ctrControl As New System.Windows.Forms.Control
Dim tempCtrl As DataGridView

[ô]Percorrendo as TabPages dentro de uma Tabcontrol
For Each CurrentTabPage As TabPage In parent.TabPages

[ô]Percorrendo os controles dentro da TabPage
For Each ctrControl In CurrentTabPage.Controls

[ô]Compara o Nome dos controles
If ctrControl.Name = NomeControle Then

tempCtrl = ctrControl

For i = 0 To tempCtrl.Rows.Count - 1

[ô]SOmente para testes adiciona um valor ao DatagridView
tempCtrl.Rows(i).Cells(0).Value = 25

[ô]Soma
soma += tempCtrl.Rows(i).Cells(0).Value

[ô]Mostra a soma na Label
LabTotalVD.Text = soma

[ô]se achar sai da sub
Exit Sub

Next

End If

Next

Next

End Sub




Abraços
Tópico encerrado , respostas não são mais permitidas