Ho un'applicazione desktop in cui l'utente ha viste tabulari su alcuni record di dati. Ora abbiamo il requisito di consentire all'utente di selezionare più di questi record allo stesso tempo e lasciare che modifichi alcune proprietà dei record selezionati in una finestra di modifica separata. L'idea è
-
per modificare solo le proprietà che l'utente desidera davvero cambiare
-
per mantenere tutte le altre proprietà invariate
Inoltre, quando l'utente ha selezionato i record e apre la finestra di modifica, le proprietà con gli stessi valori in tutti i record selezionati sono mostrate nei corrispondenti campi dell'interfaccia utente, le altre proprietà dovrebbero essere mostrate come "non definite" finché l'utente non inizia a inserire qualcosa lì. Dopo aver premuto "Ok", le modifiche vengono applicate ai record. Questo tipo di comportamento dell'interfaccia utente non è una "scienza missilistica", lo abbiamo già trovato, ad esempio, negli editor di diagrammi (in cui è possibile selezionare più elementi di disegno contemporaneamente e modificarne le proprietà).
Il problema è come visualizzare lo stato "indefinito" in modo intuitivo, specialmente per le proprietà del testo. Per i valori booleani, questo è facile: usiamo solo una casella di controllo a tre stati. Anche per i valori numerici questo è facile: lo stato "indefinito" viene visualizzato come un campo UI numerico vuoto e, se in esso c'è effettivamente un numero, lo stato è "definito".
Ma come si può progettare questo per le proprietà del testo? Un campo di una casella di testo vuota non è in realtà uno stato "non definito", poiché molte delle proprietà di testo possono essere effettivamente vuote. Si potrebbe aggiungere una casella di controllo separata accanto a ciascuna casella di testo per indicare la differenza tra "non definito" e "definito", ma poiché la nostra finestra di dialogo di modifica contiene già caselle di controllo per le proprietà booleane, ciò sembra essere controintuitivo e confuso all'utente.
Se questo è importante, stiamo usando Winforms (ma penso che questo problema non sia specifico per l'attuale framework dell'interfaccia utente).