Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - Comportamenti anomali
Forum - C# / VB.NET - Comportamenti anomali

Avatar
1/2copiatore (Normal User)
Rookie


Messaggi: 26
Iscritto: 05/10/2019

Segnala al moderatore
Postato alle 12:08
Giovedì, 21/11/2019
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

Codice sorgente - presumibilmente VB.NET

  1. Public Class Principale
  2.  
  3.     Private Sub Principale_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
  4.         'TODO: questa riga di codice carica i dati nella tabella 'Empire1DataSet.TB_Materiali'. È possibile spostarla o rimuoverla se necessario.
  5.         Me.TB_MaterialiTableAdapter.Fill(Me.Empire1DataSet.TB_Materiali)
  6.         Me.TB_QuantitàTableAdapter.Fill(Me.Empire1DataSet.TB_Quantità)
  7.         Me.TB_OggettiTableAdapter.Fill(Me.Empire1DataSet.TB_Oggetti)
  8.         Me.TB_PossedutoTableAdapter.Fill(Me.Empire1DataSet.TB_Posseduto)
  9.  
  10.         Me.Location = New Point(150, 85)
  11.  
  12.         'queste sono righe provvisorie e servono per il popolamento dei datatable
  13.         If Me.Empire1DataSet.TB_Materiali.Count = 0 Then CaricaTB_Materiali(TB_MaterialiTableAdapter)
  14.         If Me.Empire1DataSet.TB_Quantità.Count = 0 Then CaricaTB_Quantità(TB_QuantitàTableAdapter)
  15.         If Me.Empire1DataSet.TB_Oggetti.Count = 0 Then CaricaTB_Oggetti(TB_OggettiTableAdapter)
  16.         If Me.Empire1DataSet.TB_Posseduto.Count = 0 Then CaricaTB_Posseduto(TB_PossedutoTableAdapter)
  17.  
  18.         Modifica_DGV()
  19.  
  20.     End Sub
  21.  
  22.     Private Sub Modifica_DGV()
  23.         'Cambia allineamento/colori/carattere alle righe d'intestazione dei DataGridView
  24.         With DGV_Quantita.ColumnHeadersDefaultCellStyle
  25.             .Alignment = DataGridViewContentAlignment.MiddleCenter
  26.             .BackColor = Color.Navy
  27.             .ForeColor = Color.White
  28.             .Font = New Font(DGV_Quantita.Font, FontStyle.Bold)
  29.         End With
  30.         DGV_Quantita.EnableHeadersVisualStyles = False
  31.  
  32.         With DGV_Posseduto.ColumnHeadersDefaultCellStyle
  33.             .Alignment = DataGridViewContentAlignment.MiddleCenter
  34.             .BackColor = Color.Navy
  35.             .ForeColor = Color.White
  36.             .Font = New Font(DGV_Posseduto.Font, FontStyle.Bold)
  37.         End With
  38.         DGV_Posseduto.EnableHeadersVisualStyles = False
  39.  
  40.         'allinea i dati: 1° colonna al centro, le altre a destra
  41.         For Col As Integer = 1 To 7
  42.             If Col = 1 Then
  43.                 DGV_Posseduto.Columns(Col).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
  44.             Else
  45.                 DGV_Posseduto.Columns(Col).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight
  46.             End If
  47.         Next
  48.  
  49.         For Col As Integer = 1 To 8
  50.             If Col = 1 Then
  51.                 DGV_Quantita.Columns(Col).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
  52.             Else
  53.                 DGV_Quantita.Columns(Col).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight
  54.             End If
  55.         Next
  56.  
  57.         'cambia testi intestazioni ai DataGridView
  58.         If Me.Empire1DataSet.TB_Posseduto.Count > 0 And Me.Empire1DataSet.TB_Quantità.Count > 0 Then
  59.              For col As Integer = 2 To 7
  60.                 DGV_Posseduto.Columns(col).HeaderText = CType(Me.Empire1DataSet.TB_Materiali.Rows(Val(lbl_ID_Materiali.Text) - 1)(col), String)
  61.                 DGV_Quantita.Columns(col + 1).HeaderText = CType(Me.Empire1DataSet.TB_Materiali.Rows(Val(lbl_ID_Materiali.Text) - 1)(col), String)
  62.             Next
  63.         End If
  64.     End Sub
  65.  
  66.     Private Sub cmbOggetti_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles cmbOggetti.Click
  67.         Modifica_DGV()
  68.     End Sub
  69.  
  70.     Private Sub btnEsci_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnEsci.Click
  71.         Application.Exit()
  72.     End Sub
  73.  
  74.     Private Sub bntMateriali_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bntMateriali.Click
  75.         FrmMateriali.Show()
  76.     End Sub
  77.  
  78.     Private Sub bntOggetti_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bntOggetti.Click
  79.         FrmOggetti.Show()
  80.     End Sub
  81.  
  82.     Private Sub bntQuantità_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bntQuantità.Click
  83.         FrmPosseduto.Show()
  84.     End Sub
  85.  
  86.     Private Sub btnSalva_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSalva.Click
  87.         Me.Validate()
  88.         Me.TB_PossedutoBindingSource.EndEdit()
  89.         Me.TableAdapterManager.UpdateAll(Me.Empire1DataSet)
  90.     End Sub
  91.  
  92.     'Private Sub cmbOggetti_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles _ cmbOggetti.SelectedIndexChanged
  93.     '    Modifica_DGV()
  94.     'End Sub
  95. 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:


1/2copiatore ha allegato un file: vb1.png (35170 bytes)
Clicca qui per guardare l'immagine

Ultima modifica effettuata da 1/2copiatore il 21/11/2019 alle 12:48
PM Quote
Avatar
1/2copiatore (Normal User)
Rookie


Messaggi: 26
Iscritto: 05/10/2019

Segnala al moderatore
Postato alle 12:26
Giovedì, 21/11/2019
  
Testo quotato


(savescreen VB2)




1/2copiatore ha allegato un file: vb2.png (31111 bytes)
Clicca qui per guardare l'immagine
PM Quote
Avatar
1/2copiatore (Normal User)
Rookie


Messaggi: 26
Iscritto: 05/10/2019

Segnala al moderatore
Postato alle 12:26
Giovedì, 21/11/2019
Postato originariamente da 1/2copiatore:

(savescreen VB3)

  


1/2copiatore ha allegato un file: vb3.png (32756 bytes)
Clicca qui per guardare l'immagine
PM Quote
Avatar
1/2copiatore (Normal User)
Rookie


Messaggi: 26
Iscritto: 05/10/2019

Segnala al moderatore
Postato alle 12:27
Giovedì, 21/11/2019
Testo quotato

Postato originariamente da 1/2copiatore:

(savescreen VB4)

  



1/2copiatore ha allegato un file: vb4.png (35086 bytes)
Clicca qui per guardare l'immagine
PM Quote
Avatar
Thejuster (Member)
Guru^2


Messaggi: 1968
Iscritto: 04/05/2008

Segnala al moderatore
Postato alle 12:57
Venerdì, 22/11/2019
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.

Codice sorgente - presumibilmente VB.NET

  1. 'allinea i dati: 1° colonna al centro, le altre a destra
  2.         For Col As Integer = 1 To 7
  3.             If Col = 1 Then
  4.                 DGV_Posseduto.Columns(Col).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
  5.             Else
  6.                 DGV_Posseduto.Columns(Col).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight
  7.             End If
  8.         Next
  9.  
  10.         For Col As Integer = 1 To 8
  11.             If Col = 1 Then
  12.                 DGV_Quantita.Columns(Col).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
  13.             Else
  14.                 DGV_Quantita.Columns(Col).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight
  15.             End If
  16.         Next



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


PM Quote
Avatar
1/2copiatore (Normal User)
Rookie


Messaggi: 26
Iscritto: 05/10/2019

Segnala al moderatore
Postato alle 21:08
Sabato, 23/11/2019
Testo quotato

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?



PM Quote