Ho un DataGridView, che non è impostato su ReadOnly. Nessuna delle sue colonne è impostata su ReadOnly e l'oggetto a cui è associato non è impostato su ReadOnly. Tuttavia, non posso modificare gli oggetti DataGridView? La proprietà .DataSource di DataGridView è impostata su ReadOnlyCollection <>, ma posso modificare a livello di codice gli elementi, non solo dall'interfaccia utente. Cosa sta succedendo?Perché non posso modificare i valori nel mio DataGridView, anche se non è impostato su ReadOnly?
risposta
Si scopre che se il tuo DataGridView è associato a un ReadOnlyCollection, anche se è possibile modificare in modo programmatico qualsiasi elemento nella raccolta, DataGridView ti impedirà di modificare i valori. Non sono sicuro che questo comportamento sia intenzionale, ma è qualcosa a cui prestare attenzione.
Impossibile riprodurre ... vedi sotto. Con ReadOnlyCollection <> nessuno è modificabile ... –
Il mio male, si scopre che "l'unica colonna che può essere modificata" in realtà non era correttamente legata all'origine dati per tutto il tempo. – GWLlosa
+1 Vorrei aver cercato SO al mattino. Questo mi ha portato ore a sbattere la testa contro il muro prima che me ne rendessi conto. – Rytmis
Questo è solo un commento esteso (quindi wiki) in contrasto con "il DataGridView ti impedirà di modificare alcuni valori (stringhe) ma non altri valori (bool)" punto; nessuno dei due è modificabile; ne fanno un List<T>
ed entrambi sono modificabili ...:
using System;
using System.Collections.ObjectModel;
using System.Windows.Forms;
class Test
{
public string Foo { get; set; }
public bool Bar { get; set; }
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
var data = new ReadOnlyCollection<Test>(
new[] {
new Test {Foo="abc", Bar=true},
new Test {Foo="def", Bar=false},
new Test {Foo="ghi", Bar=true},
new Test {Foo="jkl", Bar=false},
});
Application.Run(
new Form {
Text = "ReadOnlyCollection test",
Controls = {
new DataGridView {
Dock = DockStyle.Fill,
DataSource = data,
ReadOnly = false
}
}
});
}
}
Whoops. Risulta che la "una colonna modificabile" era in realtà un errore di battitura nel codice di associazione, quindi in realtà era "l'unica colonna modificabile che non era effettivamente legata all'origine dati per tutto il tempo". – GWLlosa
Come si sono vincolanti per il vostro DataGridView? Una cosa è che se si sta utilizzando un elenco Linq come origine dati interrogata da un database e non si ha l'oggetto completo, le proprietà sono in sola lettura a meno che non si specifichi "con nuovo" nella funzione di selezione. Non ci sono molte informazioni nel tuo post. Spero che aiuti.
Prendere datagridview
compito e fare clic su Modifica colonna allora set the column Read Only Property to False
ho installato VS 2013 proprio ieri, ultima build (aggiornamento 5) e un bug rimane ancora che causa il comportamento che descrivi.
In breve, per ovviare al problema, assicurarsi innanzitutto che la vista datagrid sia configurabile con la GUI. Ciò include in particolare la piccola freccia nella finestra di progettazione del modulo in alto a destra del controllo. Nel menu a discesa della freccia c'è un'opzione "attiva la modifica", assicurati che sia abilitata. Ora nella finestra di progettazione del modulo le colonne vengono modificate in modo sostanziale (come aggiungere o rimuovere una colonna). È così, quando esegui il programma dovresti trovare che la modifica della GUI sta funzionando ora.
Per riprodurre questo bug, nel modulo di progettazione utilizzare la piccola freccia in alto a destra del controllo datagridview per impostare "abilita modifica" su falso. Ora apporta una modifica importante alle colonne (ad esempio aggiungi o rimuovi una colonna). Compilare ed eseguire il programma. Ora torna alla piccola freccia e riabilita la casella di controllo "abilita modifica". Di nuovo, esegui il programma. A questo punto l'errore si manifesta, e scoprirai che il datagridview non è modificabile dalla GUI anche se hai configurato diversamente nel VS.
- 1. Meteor: ANDROID_HOME non è impostato, anche se esso è impostato
- 2. Perché il mio programma è un maiale di risorse anche se ho impostato THREAD_MODE_BACKGROUND_BEGIN?
- 3. Perché sono in grado di utilizzare il mio costruttore di valori anche se non lo esporto?
- 4. Perché il mio sito tenta di caricare il file aspnet_filter.dll a 32 bit anche se 'enable32BitAppOnWin64' è impostato su False?
- 5. Perché Github non mostra i miei contributi anche se ho aggiunto il mio indirizzo email?
- 6. Perché Capistrano utilizza/u/apps/nel percorso corrente, anche se ho impostato: deploy_to
- 7. Perché non viene visualizzato .lesshst nel mio ~
- 8. Perché non posso I .invokeExact() qui, anche se MethodType è OK?
- 9. Perché git log non è impostato su git log --follow?
- 10. ListItem.Value sovrascrive il testo se non impostato
- 11. La funzione R non funziona con i valori di NA anche se NA è consentito
- 12. Namespace non riconosciuto (anche se è lì)
- 13. Perché non posso selezionare le celle nel mio datagrid WPF?
- 14. perché i metodi delegati UIPickerView non vengono chiamati anche dopo aver impostato i protocolli delegati?
- 15. Perché non includere i file JSP nel mio barattolo?
- 16. Perché EF4 sta cercando di ricreare il mio database anche se il modello non è cambiato?
- 17. Perché php curl non salva i cookie nel mio cookiefile?
- 18. Se `this` non è const, perché non posso modificarlo?
- 19. perché non posso collegarmi al mio processo?
- 20. Non posso usare X come Y perché il nome è già in uso, anche se non è
- 21. Perché la caduta è consentita anche se Effects = DragDropEffects.None è impostato?
- 22. Perché i pulsanti di opzione non possono essere "readonly"?
- 23. Perché non è il metodo toLowerCase(); funziona nel mio codice?
- 24. I metadati Blob non vengono salvati anche se chiamo CloudBlob.SetMetadata
- 25. Posso modificare un metodo su PHPUnit Mock dopo averlo impostato?
- 26. Perché il mio fuso orario non viene salvato nel mio NSDate?
- 27. Perché non posso avviare il mio progetto LibGDX su html?
- 28. Django: MEDIA_URL non impostato nel modello
- 29. Perché le celle DataGridView non vengono aggiornate?
- 30. Perché non posso eliminare i valori javascript dichiarati con var?
Come stai cercando di modificare gli elementi? Quali sono i comportamenti che pensi dovresti vedere che non vedi? – David