Oppure

Loading
21/11/19 11:08
1/2copiatore
Buongiorno a tutti

per capire come funzionano meglio le cose, ho momentaneamente sospeso il progetto dell'archivio monete, e ne ho intrapeso un'altro che mi sembrava più semplice.
Questo nuovo progetto consiste, in base all'oggetto e in base al suo livello, di calcolare quante risorse sono neccessarie.

Per realizzare questo, ho creato 4 tabelle:
1- "TB_Oggetti" con campo 'Descrizione' associato a un combobox, i rimanenti campi associati a delle labelbox(per visualizzare i corretti movimenti);
2- "TB_Metalli" per la sola modifica delle intestazioni dei DataGridView;
3- "TB_Quantità" per popolare il relativo datagrid (quello a destra del form "DGV_Quantità";) contenente in base all'oggetto selezionato nel combo le relative quantità dei materiali neccessari per ogni livello;
4- "TB_Posseduto" per popolare il datagrid (quello a sinistra del form "DGV_Posseduto";) dove viene visualizzate le quantità dei materiali che sono già in mio possesso.

Ora veniamo alle anomalie riscontrate (inserisco dei savescreen per vedere meglio la cosa)
1- (savescreen VB1) all'avvio, si nota subito che nel datagrid dei posseduti l'ultima colonna dell'intestazione non è allineata al centro come le altre e nell'altro datagrid, tutti gli altri dati sono correttamente visualizzati, mentre, dopo il punto 2 è corretta si vede nel savescreen3;
2- (savescreen VB2) selezionando un'altro oggetto con il combobox si aggiornano il combo e le relative label, ma non si aggiornano le intestazioni dei datagrid, mentre se clicco seconda volta sul combo (non sulla sua casella di apertura della lista) si aggiornano anche le intestazioni dei datagrid (savescreen 3), premetto che qui ho usato l'evento Click del combo in quanto l'evento SelectedIndexChanged mi creava ancora più problemi;
3- (savescreen 4) guardate la lista del combo !!! è tutta incasinata.

ora posto anche il listato

Public Class Principale

    Private Sub Principale_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        'TODO: questa riga di codice carica i dati nella tabella 'Empire1DataSet.TB_Materiali'. È possibile spostarla o rimuoverla se necessario.
        Me.TB_MaterialiTableAdapter.Fill(Me.Empire1DataSet.TB_Materiali)
        Me.TB_QuantitàTableAdapter.Fill(Me.Empire1DataSet.TB_Quantità)
        Me.TB_OggettiTableAdapter.Fill(Me.Empire1DataSet.TB_Oggetti)
        Me.TB_PossedutoTableAdapter.Fill(Me.Empire1DataSet.TB_Posseduto)

        Me.Location = New Point(150, 85)

        'queste sono righe provvisorie e servono per il popolamento dei datatable
        If Me.Empire1DataSet.TB_Materiali.Count = 0 Then CaricaTB_Materiali(TB_MaterialiTableAdapter)
        If Me.Empire1DataSet.TB_Quantità.Count = 0 Then CaricaTB_Quantità(TB_QuantitàTableAdapter)
        If Me.Empire1DataSet.TB_Oggetti.Count = 0 Then CaricaTB_Oggetti(TB_OggettiTableAdapter)
        If Me.Empire1DataSet.TB_Posseduto.Count = 0 Then CaricaTB_Posseduto(TB_PossedutoTableAdapter)

        Modifica_DGV()

    End Sub

    Private Sub Modifica_DGV()
        'Cambia allineamento/colori/carattere alle righe d'intestazione dei DataGridView
        With DGV_Quantita.ColumnHeadersDefaultCellStyle
            .Alignment = DataGridViewContentAlignment.MiddleCenter
            .BackColor = Color.Navy
            .ForeColor = Color.White
            .Font = New Font(DGV_Quantita.Font, FontStyle.Bold)
        End With
        DGV_Quantita.EnableHeadersVisualStyles = False

        With DGV_Posseduto.ColumnHeadersDefaultCellStyle
            .Alignment = DataGridViewContentAlignment.MiddleCenter
            .BackColor = Color.Navy
            .ForeColor = Color.White
            .Font = New Font(DGV_Posseduto.Font, FontStyle.Bold)
        End With
        DGV_Posseduto.EnableHeadersVisualStyles = False

        'allinea i dati: 1° colonna al centro, le altre a destra
        For Col As Integer = 1 To 7
            If Col = 1 Then
                DGV_Posseduto.Columns(Col).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
            Else
                DGV_Posseduto.Columns(Col).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight
            End If
        Next

        For Col As Integer = 1 To 8
            If Col = 1 Then
                DGV_Quantita.Columns(Col).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
            Else
                DGV_Quantita.Columns(Col).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight
            End If
        Next

        'cambia testi intestazioni ai DataGridView
        If Me.Empire1DataSet.TB_Posseduto.Count > 0 And Me.Empire1DataSet.TB_Quantità.Count > 0 Then
             For col As Integer = 2 To 7
                DGV_Posseduto.Columns(col).HeaderText = CType(Me.Empire1DataSet.TB_Materiali.Rows(Val(lbl_ID_Materiali.Text) - 1)(col), String)
                DGV_Quantita.Columns(col + 1).HeaderText = CType(Me.Empire1DataSet.TB_Materiali.Rows(Val(lbl_ID_Materiali.Text) - 1)(col), String)
            Next
        End If
    End Sub

    Private Sub cmbOggetti_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles cmbOggetti.Click
        Modifica_DGV()
    End Sub

    Private Sub btnEsci_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnEsci.Click
        Application.Exit()
    End Sub

    Private Sub bntMateriali_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bntMateriali.Click
        FrmMateriali.Show()
    End Sub

    Private Sub bntOggetti_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bntOggetti.Click
        FrmOggetti.Show()
    End Sub

    Private Sub bntQuantità_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bntQuantità.Click
        FrmPosseduto.Show()
    End Sub

    Private Sub btnSalva_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSalva.Click
        Me.Validate()
        Me.TB_PossedutoBindingSource.EndEdit()
        Me.TableAdapterManager.UpdateAll(Me.Empire1DataSet)
    End Sub

    'Private Sub cmbOggetti_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles _ cmbOggetti.SelectedIndexChanged
    '    Modifica_DGV()
    'End Sub
End Class


Spero di esser stato chiaro, qualcuno mi sa spiegare la cosa? e come rimediare?

OPS 8-| Ho notato ora che si puo visualizza un solo savescreen :grr:
Ultima modifica effettuata da 1/2copiatore 21/11/19 11:48
aaa
21/11/19 11:26
1/2copiatore
(savescreen VB2)

aaa
21/11/19 11:26
1/2copiatore
Postato originariamente da 1/2copiatore:

(savescreen VB3)

aaa
21/11/19 11:27
1/2copiatore
Postato originariamente da 1/2copiatore:

(savescreen VB4)

aaa
22/11/19 11:57
Thejuster
Ed io ero convinto che i ciaffi uscissero fuori solo a settembre. " Cit. TheKaneB"
Potevi usare un qualsiasi sito di hosting immagini online invece mandare 4 risposte nel forum.
Oltre al fatto che è un macello capire le screen.

Controlla qui.

        'allinea i dati: 1° colonna al centro, le altre a destra
        For Col As Integer = 1 To 7
            If Col = 1 Then
                DGV_Posseduto.Columns(Col).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
            Else
                DGV_Posseduto.Columns(Col).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight
            End If
        Next
 
        For Col As Integer = 1 To 8
            If Col = 1 Then
                DGV_Quantita.Columns(Col).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
            Else
                DGV_Quantita.Columns(Col).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight
            End If
        Next



Perché non hai impostato direttamente l'allineamento della cella invece di farlo da codice?
mire.forumfree.it/ - Mire Engine
C# UI Designer
23/11/19 20:08
1/2copiatore
Postato originariamente da Thejuster:

Ed io ero convinto che i ciaffi uscissero fuori solo a settembre. " Cit. TheKaneB"
Potevi usare un qualsiasi sito di hosting immagini online invece mandare 4 risposte nel forum.
Oltre al fatto che è un macello capire le screen.

Controlla qui.

Perché non hai impostato direttamente l'allineamento della cella invece di farlo da codice?


buonasera

chi sono i "ciaffi" non lo so!

non sapevo se c'era una proprietà da impostare, dopo il tuo suggerimento ho guardato meglio ... trovata :hail:
comunque agisce su tutte le colonne, per cui, visto l'impostatazione a destra, ho riscritto l'istruzione alla prima colonna che la voglio al centro

grazie

mi sai dire qualcosa per il resto?


aaa