Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Test ride Can-Am Origin: la moto elettrica che fa dimenticare il motore a scoppio (ma occhio all'autonomia)
Test ride Can-Am Origin: la moto elettrica che fa dimenticare il motore a scoppio (ma occhio all'autonomia)
Abbiamo provato per una settimana intera la Can-Am Origin, la Dual Sport elettrica del gruppo canadese BRP: ecco com'è andata tra città, autostrada e un primo assaggio di sterrato
Logitech G325, G305 e G316 X: il tris per chi non vuole rinunciare a nulla, spendendo poco
Logitech G325, G305 e G316 X: il tris per chi non vuole rinunciare a nulla, spendendo poco
Nelle ultime settimane abbiamo provato il mouse Logitech G305, la tastiera G316 X 98 e le cuffie G325. Si tratta del setup entry-level di Logitech che ormai, di "entry-level" ha ben poco. Tastiera e mouse offrono prestazioni di livello competitivo con quasi nessuna rinuncia e un livello di personalizzazione estremamente elevato. Le cuffie, invece, hanno mostrato qualche debolezza, ma propongono un ventaglio di funzionalità completo che consente di abbandonare completamente i cavi
Recensione POCO F9 pro: potenza da vero top di gamma, display da 185 Hz e finalmente una fotocamera da prendere sul serio
Recensione POCO F9 pro: potenza da vero top di gamma, display da 185 Hz e finalmente una fotocamera da prendere sul serio
POCO F9 Pro arriva sul mercato con l'obiettivo di portare prestazioni da smartphone top di gamma in una fascia di prezzo "più aggressiva", senza rinunciare a un comparto fotografico finalmente all'altezza. Dopo averlo testato sul campo, emerge uno smartphone molto più completo rispetto alla generazione precedente, ma anche con alcuni piccoli compromessi che diventano difficili da ignorare quando il prezzo di listino sfiora i 1.000 euro.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 13-09-2014, 14:24   #1
mistermix73
Junior Member
 
Iscritto dal: Sep 2014
Messaggi: 5
Visual studio - problema datagridview

Ciao, ho creato un software usando windows form di visual studio ma ho un problema con la datagridview, in pratica ho creato un button che invia l'ora attuale alla cella della riga selezionata in quel momento in una datagridview il problema e che dovrebbe farlo solo per una volta mentre invece ogni volta che viene cliccato il button mi aggiorna l'ora, qualcuno sa dirmi come evitare di sovrascrivere una cella?
mistermix73 è offline   Rispondi citando il messaggio o parte di esso
Old 14-09-2014, 14:07   #2
msangi
Member
 
Iscritto dal: Sep 2011
Città: Londra
Messaggi: 167
Postare il codice potrebbe aiutare a individuare il tuo problema.

Ad occhio, quello che devi fare è tenere traccia in una variabile del fatto che hai eseguito l'operazione la prima volta, così puoi evitare di ripeterla ai click successivi.

L'approccio ideale è quello di definire un tuo command (qui trovi un esempio) e poi fare un binding con il click del bottone.
In questo modo separi chiaramente la componente grafica del bottone e la logica associata alla sua pressione.
__________________
Twitter - Blog
msangi è offline   Rispondi citando il messaggio o parte di esso
Old 14-09-2014, 15:41   #3
birmarco
Senior Member
 
L'Avatar di birmarco
 
Iscritto dal: Mar 2008
Città: Milano; 9 Vendite concluse -> Wilde; emmepi; Homerj81; cos1950; mariotanza; Benia; grigor; alekia; ARG0
Messaggi: 11160
Codice:
private class TuaPagina 
{
       private TuaPagina()
       {
              btnGrid.Click =+ btnGrid_Click;
       }

       private void btnGrid_Click(object sender, EventArgs e)
       {
              //Inserisci data nella grid
              btnGrid.Click =- btnGrid_Click;
       } 
}
Questa è una possibilità che ti evita di usare un boolean. Dopo aver inserito la data rimuovi l'handler del click.

Poi dipende se questo bottone ti serve anche per fare altro oppure no

Sicuramente se dopo il click non de-registri l'handler che inserisce l'ora, ogni volta che clicchi il bottone il codice verrà sempre eseguito.

Può essere anche meglio il suggerimento di msangi se stai creando un software con MVVM, in questo caso nel CanExecute dell'ICommand fai il check della data (è già inserita o no?)
birmarco è offline   Rispondi citando il messaggio o parte di esso
Old 15-09-2014, 10:13   #4
mistermix73
Junior Member
 
Iscritto dal: Sep 2014
Messaggi: 5
Grazie delle risposte ragazzi il button non posso disabilitarlo poichè serve per inserire gli altri record in datagridview, in pratica è un programma di gestione garage e funziona cosi: una datagridview popolata tramite due button, il button1 mi permette di inserire targa, tariffa ed ora di entrata e il button2 mi inserisce l'ora di uscita e l'importo da pagare nella riga selezionata, per questo mi serve che il button2 mi inserisca l'ora di uscita solo una volta per ogni riga altrimenti si rischia che l'utente seleziona la riga sbagliata e gli modifica una seconda volta l'orario di conseguenza l'importo da pagare e gli eventuali totali di giornata (che tra l'altro ancora non ho creato ) questo è il metodo che ho usato io:

nel pubblic class form2
Private ind As Integer

mentre nell'evento button2_click
DataGridView1.Rows(ind).SetValues(Me.DataGridView1.Item(0, ind).Value.ToString, Me.DataGridView1.Item(1, ind).Value.ToString, Me.DataGridView1.Item(2, ind).Value.ToString, Me.DataGridView1.Item(3, ind).Value.ToString, TextBox2.Text)
mistermix73 è offline   Rispondi citando il messaggio o parte di esso
Old 16-09-2014, 23:15   #5
birmarco
Senior Member
 
L'Avatar di birmarco
 
Iscritto dal: Mar 2008
Città: Milano; 9 Vendite concluse -> Wilde; emmepi; Homerj81; cos1950; mariotanza; Benia; grigor; alekia; ARG0
Messaggi: 11160
Quella riga riga di codice viola almeno 5 codici di diritto penale!
E' troppo lunga da leggere

Cmq se il button può settare solo una volta la cella devi in qualche modo tenere traccia di ciò.
Soluzione 1:
Nel caso la cella può essere riempita una sola volta (quindi prima era vuota):

Codice:
If (String.IsNullOrWhiteSpace(Grid.SelectedItem.Value) Than
    //Aggiungi data
End If
Soluzione 2:
Nel caso la cella possa avere anche altri valori prima della tua azione, devi tenere traccia degli inserimenti. Dato che è una sola colonna/riga può andare bene un array, altrimenti devi usare una matrice:

//Nel corpo della classe
Codice:
Private col As New List(Of Integer)
//Ogni volta che inserisci una nuova riga
Codice:
col.Add(0);
//Al click del bottone, controlli che la posizione nella lista non sia già settata, in caso sia 0 imposti la data, altrimenti lasci stare. L'1 nella lista sta ad indicare che hai già settato quella data.
Codice:
If (Grid.SelectedItem.ColIndex < col.Count) Than
     If (Col[RawIndex] == 0) Than
         Col[RawIndex] = 1
         //Setto la data
     EndIf
End If
PS. Non uso VB da un sacco, potrei aver fatto errori di sintassi
PPS. Grid è la tua GridDataView, SelectedItem ipotizzo sia l'elemento selezionato (cella), Value e RawIndex il valore della cella e il suo indice di riga... sono anni che non uso Windows Form, non ricordo più come sia la GridDataView
birmarco è offline   Rispondi citando il messaggio o parte di esso
Old 17-09-2014, 12:11   #6
mistermix73
Junior Member
 
Iscritto dal: Sep 2014
Messaggi: 5
Sto provando le due possibilità ovviamente adattandole al mio caso ma (causa la mia ignoranza/inesperienza) mi da sempre errore in tutti e due casi. Nel primo caso:

If (String.IsNullOrWhiteSpace(Datagridview1.SelectedItem.Value) Then
//va avanti con il codice
End If

nel secondo caso:

If (Datagridview1.SelectedItem.ColIndex < col.Count) Then
If (Col[RawIndex] == 0) Then
Col[RawIndex] = 1
//va avanti con il codice
EndIf
End If

ho provato diverse soluzioni ma niente....
mistermix73 è offline   Rispondi citando il messaggio o parte di esso
Old 17-09-2014, 15:51   #7
birmarco
Senior Member
 
L'Avatar di birmarco
 
Iscritto dal: Mar 2008
Città: Milano; 9 Vendite concluse -> Wilde; emmepi; Homerj81; cos1950; mariotanza; Benia; grigor; alekia; ARG0
Messaggi: 11160
Quote:
Originariamente inviato da mistermix73 Guarda i messaggi
Sto provando le due possibilità ovviamente adattandole al mio caso ma (causa la mia ignoranza/inesperienza) mi da sempre errore in tutti e due casi. Nel primo caso:

If (String.IsNullOrWhiteSpace(Datagridview1.SelectedItem.Value) Then
//va avanti con il codice
End If

nel secondo caso:

If (Datagridview1.SelectedItem.ColIndex < col.Count) Then
If (Col[RawIndex] == 0) Then
Col[RawIndex] = 1
//va avanti con il codice
EndIf
End If

ho provato diverse soluzioni ma niente....
Come avevo scritto nel PS sono proprietà inventate da me per farti capire il concetto, non ricordando quelle di default della DataGridView

Con SelectedItem intendo la proprietà che definisce la cella selezionata, non so se c'è, ma sicuramente puoi riferirti facilmente ad essa guardando la doc su MSDN
Stessa cosa per SelectedItem.Value indica il contenuto della cella che hai selezionato, anche qui devi cercare la proprietà giusta.
Nel tuo codice usi "DataGridView1.Item(0, ind).Value", quindi puoi intendere il mio codice come DataGridView1.Item(IndiceColonnaSelezionata, IndiceRigaSelezionata).Value

RawIndex indica l'indice della riga selezionata dall'utente, anche in questo caso devi cercare tu la proprietà relativa all'indice della riga selezionata.

birmarco è offline   Rispondi citando il messaggio o parte di esso
Old 20-09-2014, 12:26   #8
mistermix73
Junior Member
 
Iscritto dal: Sep 2014
Messaggi: 5
If String.IsNullOrWhiteSpace(DataGridView1.Item(4, ind).Value) Then

fatto grazie mille!!
mistermix73 è offline   Rispondi citando il messaggio o parte di esso
Old 20-09-2014, 12:35   #9
mistermix73
Junior Member
 
Iscritto dal: Sep 2014
Messaggi: 5
Per caso sai dirmi anche se c'e' modo di far comparire sempre un formato numerico a due cifre in un label? al momento fermando il cronometro prima del 10 mi compare una sola cifra per esempio 9 ma a me serve il formato 09
mistermix73 è offline   Rispondi citando il messaggio o parte di esso
Old 20-09-2014, 15:42   #10
msangi
Member
 
Iscritto dal: Sep 2011
Città: Londra
Messaggi: 167
Dai un'occhiata qui per vedere come puoi impostare la formattazione in una label http://stackoverflow.com/a/18362876/353268
__________________
Twitter - Blog
msangi è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Test ride Can-Am Origin: la moto elettrica che fa dimenticare il motore a scoppio (ma occhio all'autonomia) Test ride Can-Am Origin: la moto elettrica che f...
Logitech G325, G305 e G316 X: il tris per chi non vuole rinunciare a nulla, spendendo poco Logitech G325, G305 e G316 X: il tris per chi no...
Recensione POCO F9 pro: potenza da vero top di gamma, display da 185 Hz e finalmente una fotocamera da prendere sul serio Recensione POCO F9 pro: potenza da vero top di g...
Tra audio e AI: la ricetta di Qualcomm per l'agentic AI Tra audio e AI: la ricetta di Qualcomm per l'age...
Qualcomm annuncia la nuova generazione di SoC Snapdragon 8 Elite Gen 6 Qualcomm annuncia la nuova generazione di SoC Sn...
Dallo scroll condiviso ai quiz con Gemin...
Gli agenti AI stanno superando i limiti:...
Con SAS Viya, gli agenti IA passano dall...
OpenAI prepara 'o', un assistente sempre...
Fra coupon e sconti al check-out, ecco t...
Ninja Foodi MAX 14 in 1 a 329,99€: la mu...
Dario Amodei invitato a cena privata da ...
Poste Italiane sale all'85,82% di TIM: o...
FRITZ!Box 6820 LTE a 59,98€: il router 4...
Minecraft introduce una nuova dimensione...
Grok 4.6, Claude Fable 5.1 e GPT-6 Astra...
Apple: condanna da 5,7 miliardi di dolla...
Halo potrebbe ripartire da zero con il p...
A 200€ (sconto al check-out) è il...
899€, ci sono 2 Smart TV OLED da 55 poll...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 11:26.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v