6

I have this ugly interface in WinForms that is both character-limited and slow. The basic idea is that it needs to be a dynamically sizeable 2D array. Each position in the array can be set independently from the rest. On form load, I create the array of combo boxes based on the array dimensions and I do a database lookup to populate each combo box with an identical list of options. This example is 20x20, but I also have a 25x31 variety. That one doesn't even fit within 1920x1080 resolution.

My question is, is there a different control or a design technique that can make this less unwieldy? I've hated this form from day 1, but I haven't come up with an alternative.

enter image description here

6

If each combobox is always going to have the same set of possible values, you could instead use a DataGridView with multiselectable cells, and change that "Copy to all" button into a "Set Selected Cells" button, so the user has to ctrl+click the cell they want to modify, select the value from the ComboBox and press that Button. This also lets the user select with ease a complete row or column and adds a better handling with the built-in ScrollBars of the DataGridView.

Something like this... Something like this

  • This is very promising. I considered the dataGridView, but didn't know how to handle individual/bulk operations - this solves both issues very nicely. And, since I would only need to populate the bottom-left box with database values, I imagine this would drastically improve performance as well. You've also addressed the resolution problem and character limitation. The columns have the built-in ability to shrink and expand, and I could write code to shrink and expand the grid view with the window. I'm amazed you reconstructed the whole window to illustrate your idea. Thanks. – Casey Aug 22 '15 at 21:26
3

Wow! That's an impressive settings table! Even a little scary.

From the looks of it, I'm assuming this is a proprietary app you can't tell us too much about. But I'll pose a few questions just the same.

  1. Is the position of a cell meaningful to the user? If it's important that they understand how a unit relates to two relational axes, the grid presentation is probably the most efficient option.
  2. Is the discrete value of each cell important, or do users tend to deal with them in bulk? I ask because your example has only a small number of deviations.
  3. Is the continuous progression of the data set from one cell to the next important? If not, it may be possible to break the whole array into groups.

If #1 is false, you can start considering other presentations. Without understanding the workflow and meaning of the data, it's very hard to say what that presentation might be.

If #2 is false, you can probably compress the table in a way that is both helpful to the user and improves use of screen real estate. In the context of a table, think of how you might hide columns in a spreadsheet and only expand when you need to inspect detail. The header could be 2-28 [expand >], where the cells below represent duplicative data across columns and an expand link allows the user to change individual cells.

If #3 is false, you might be able to break the table down into smaller, logical groups. It wouldn't necessarily be any more efficient, but it would make the controls less intimidating and allow for larger click targets through better space distribution.

  • 1 is always true 2 is true, but bulk operations are common. My current design is terrible for bulk operations. 3 is false. I like the concept of collapsing rows and columns except that the user needs to maintain awareness of their position in the grid. The labels at the top would get confusing I fear. My knowledge of WinForms also says this is difficult to achieve. Thanks for the comments. I will add these to my considerations. – Casey Aug 22 '15 at 21:17

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.