How to change the width of an item in a listview? - vb.net

I have a winforms application with a listview that shows 6 items. The problem is that each item's width is too long so the user has to scroll to the right to see all of each item.
How can I shorten the width of each rectangle for each item to match the width of the data inside the item/rectangle???
Thank you

Use this code:
ListviewName.View = View.Details
ListviewName.Columns.Clear()
ListviewName.Columns.Add("Columnn1", CInt(ListviewName.Width / divide))
add all your column.
divide value is depends on how many column in your Listview, but that's if you want all of your column size is equal.

Related

Data Grid View VB.net 2013 , How many rows and which are visible in window?

I have a datagridview control with 10 rows on my form window.
Now lets suppose the size of the datagridview in the form can only display 5 rows to user and user has to use vertical scroll bar to see the other 5 rows.
now my question is :
Is there any way to know which 5 rows are currently visible to the user according to the position of scroll bar.
Actually in my program currently i am updating the all the rows value one by one of that datagridview table continuously.
Now i want to only update the rows that are visible in the window. so how can i know what rows are visible according to scroll bar position.
Thanks in advance
The DataGridView control exposes a VerticalScrollingOffset property which can be used to determine how far the view is scrolled. If you know the height of each row in the DataGridView in pixels, you can then calculate which rows of the table are currently visible and refresh them.
The height of each row can be determined through the DataGridViewRow property Height. This defaults to the font height, plus 9 pixels - if you're using the same font size in all rows this should be consistent.
EDIT: Further digging through the documentation shows that each DataGridViewRow exposes a Displayed property that returns true when the row is visible on the user's screen. Checking that would be much easier!
MSDN on DataGridViewRow.Displayed property

Items should be arrange into three columns in CheckedListBox or listview or listbox

I have used CheckedListBox control in vb.net application.
I have several items as follow, item 1, item 2, item 3........item 100.
Now, i want all these items to arrange into three columns and then appear verticle scrollbar.
But, in CheckedListBox, it appears as horizontally. i want it to appear horizontally for just three columns and then vertical scroll should enable.
Can you please suggest if possible in CheckedListBox control or any other control and if possible then how i would have to set its property to achieve this.
I don't think you can do that in a CheckedListBox....
You could create a FlowLayoutPanel, with a fixed width and add AutoScroll = True.
Then add a number of CheckBox controls to it.
You could have problems regarding column alignment and margins. If that's the case, you can set the checkbox Autosize = False and make them a little larger (in order to contain the text)
Or you can reduce the Height of the checkboxes to reduce spaces (is this what you want?)
eg. Height = 15
Use repeat direction =horizontal and repeat column =3 for checkbox list

How to Change Form Width Depending on Datagridview's Data

I have a form that contains a datagridview. The cells in the datagridview expand or contract depending on text width.
How can I make the parent form in which the data grid is docked also contract or expand to the cell (total of all cells) width?
Hence I want the parent form to change in the row (width) size and not in the column (height) size?
Im using vb.net
I would recommend just making it so that users can resize the program to the width that they want, and have the datagridview adjust it's width to fit the forms width. If you adjust it based on the columns, then it could cause issues where the form is bigger than the users screen. The easiest way to do this is by using the Dock and Anchor attributes.
If you really want to have the form adjust it's width to fit the columns, you would have to loop through the columns and add the width values together after it is databound. After you get the total width, you would have to set your forms width
The code would look something like this:
Dim intWidth As Integer
For Each dgvcc As DataGridViewColumn In DataGridView1.Columns
intWidth += dgvcc.Width
Next
Me.Width = intWidth

FlowPane height change measurements

I have a Stage as a form with a FlowPane. I just add Strings to the FlowPane. The main target with the flowpane is to create a "Tag" like control. This Tagcontrol is in the middle of the form.
Without or only one/two items the FlowPane should only have the same height as a TextField. When adding more and more Strings the FlowPane should increase its height till a certain maximum. While increasing the height of the FlowPane till its maximum also the height of the Stage should grow.
Now: how do I get the needed delta-height of the FlowPane when adding more and more items. For example on the first row I have two strings, on the second row i could right 5 strings depending of the string-length. If I have the delta i can use this to increase the height of the Stage easily.. but I am stuck with this calculation of flowheight-change.
I just messed around somewhere else in the code. You can just bind the height of the flowpane and you're good.

Datagrid autoheight + lazy loading

I have a Dojo Datagrid which has 10 columns and about 400 records of data... it doesn't seem like that much but it is very very slow to scroll...
I have another Datagrid which has some 5k records and it scrolls faster. The only difference between the two is that for one I am specifying the height in pixels and have autoheight turned off...
For the smaller one, I couldn't use height = 100% to fill up its parent div because for some reason it doesn't like a percent height and doesn't even render the grid if I specify a percent height - I have to give it in pixels... if I use autoheight = true, then it fills up its parent div which is what I want but then it loads ALL data in the grid at once and so it doesn't do any lazy loading of the data.
Any ideas how to achieve lazy loading and still be able to use autoheight = true (or be able to expand the grid so that it always fills up the height of its parent div)?
Thanks
autoHeight can be set to a numeric value, which will define the maximum number of rows to display