views:

24

answers:

1

I have a table of about 450 rows that I would like to display in a graphical list for users to view or modify the line items. The users would be selection options from comboboxes and selecting check boxes etc.

I have found a listview class that extends the basic listview to allow for embeding objects but it seems kind of slugish when I load all the rows into it.

I have used a datagridview in the past for comboboxes and checkboxes, but there was a lot of time invested in getting that up and running...not a big fav of mine.

I am looking for sugestions how I can do this with minimal overhead.

thanks

c#, vs2008, .net 2.0, system.windows.forms

+1  A: 

If you have a complicated set of controls for each row, this is the simplest way to do it. However, it won't act like a listbox; you won't be able to highlight your rows or navigate with the keyboard.

  • Create a usercontrol with public property to point to your row
  • Draw a panel on your form - you will add instances of your 'row' usercontrol at runtime to this panel.
  • Set the panel to autoscroll (also set property to make the active control scroll into view)
  • Set the panel's Anchor property so it sizes w/ the window
  • You can set the form's max/min size properties so the full usercontrol row always shows (have to do to prevent horiz. scroll bar in panel)
  • Have a routine to add the rows
  • In a loop, create new usercontrols, set their properties, including the row in the datatable
  • Also, set the .Top property to the panel's .controls(pnl.controls.count-1) for all but the first one you add

Very simple, allows complicated 'rows', gets the job done. There are better ways to do this if you want listbox-like functionality without coding it yourself, but you may not need that.

FastAl
+1 You could have each of the row controls dock to the top, then reorder them by bringing them to the front/sending them to the back.
Daniel Rasmussen