How to wrap the text in a column using ObjectListView - c#

I'm using ObjectListView and I'm trying to wrap the text in a column.
I have 2 columns and have set the WordWrap property of the second column to true. It doesn't appear to work.
In the image below the last line should wrap
I have searched SO and tried all the suggestions including setting OwnerDraw to true but nothing helps.
Any ideas?

"Owner draw" means: I (the control) will not draw anything, I will assume that you (the control consumer) will do it all for me.
That is a general statement, I know nothing of this specific control. It seems to me that the WordWrap feature is not implemented. So you either have to implement the feature in the control itself or use OwnerDraw which means doing it all yourself.
Updated
By the way, I encounter this need myself quite often. I don't bother with ListView or 3rd party controls, I simply use a DataGridView and make it look and behave like a ListView. It can do wrapping text columns.

According to this answer, your ObjectListView must be "OwnerDrawn".

Related

Objectlistview TextMatchFilter Filter and not Highlight

i try to use TextMatchFilter for my ObjectListView.
I do not know why, but instead of Filterung (what i want), the function only highlights the words.
So i want the whole ObjectListView to show only the Rows where the Filter is true.
This is my Code:
this.fastoLV_Clean.ModelFilter = TextMatchFilter.Contains(this.fastoLV_Clean, "Test");
fastoLV_Clean.Refresh();
Does anyone know, what i have to do to really Show only the rows and not to only highlight the ones in which it was found?
Regards and thank you,
You need to set the UseFiltering property of your ObjectListView to be True
If you don't set this, then it will just highlight your text. When set, then it will filter and only show the relevant rows.
BTW: You don't need to call fastoLV_Clean.Refresh()
A Refresh is normally only needed in some cases, such as when you change the columns programmatically. It is not needed for simple things such as this when you model data is updated. (I noticed this also in your other post, but forgot to mention it!)

How to disable autoscrolling in richTextBox?

How can I disable autoscrolling in richTextBox by simultaneously enabled possibility of text selection?
Setting the focus to another control is the simple way.
In general, you don't want the user to see these updates at all. It tends to cause a lot of flicker while you are updating the content. The boilerplate solution that most controls provide for that is their BeginUpdate and EndUpdate methods. RichTextBox is missing them however. You can add them though with a wee bit of pinvoke. You'll find the required code in this answer.
Please ,
Make ReadOnly is true for selection text but disable for change String.
Ex. :
RichTextBox1.ReadOnly=True
RichTextBox1.ScrollBars = RichTextBoxScrollBars.None;

ObjectListView doesn't word-wrap

I am using ObjectListView instead of the standard ListView is because I wanted to word-wrap the columns.
I read in several places that the only thing I need to to in order to enable word-wrapping is the set column.wordWrap to true.
I did just that, but it doesn't work.
What am I missing here?
Edit:
I realise now that I need to make my column owner drawn.
I found this page which sort of tells me what to do, but I'm not sure where to place it in my code. I'm also not quite sure whether I need to add certain attributes inside the delegate to allow word-wrapping (by the looks opf things it's enabled by default). The thing is, I tried what I found in this page, copied it word for word, and my list looks exactly the same...
If you mean by "word wrapping", you want different rows to have different heights, the FAQ answer is correct -- it simply can't be done.
However, if you make each row so that it can display two or more lines of text, then, yes, ObjectListView can word wrap.
It needs three conditions:
Set WordWrap to true on the column to wrap. You've already done that.
Make sure the ObjectListView is owner drawn (set OwnerDraw to true -- this can be done in the Form Designer). The base ListView can't word wrap, so we have to draw the cells ourself.
Make sure there is room to see the wrapped lines by setting the RowHeight to 32 (or some other value)
This is the data tab from the demo. The first column has WordWrap set to true.
On the ObjectListView SourceForge FAQ page, it explicitly states:
Can it word-wrap?
No.

DatagridView Background does not refresh. Traces left behind

I have a DataGridView bound on a generic list, in .NET 3.5.
When this grid is resized, there is a residual traces that is left behind on the background of the grid where there is no items. This only occurs where there is some columns that have the WrapMode attribute set to True. It seems that only the content that is wrapped is not refreshed on the background of the grid.
Anybody have a workaround or a resolution for this problem?
I did not found any solution for that, i have a workaround by creating a custom form for edition and leave the grid read-only with one-time height adjustment.
Third-party grids should do better for this purpose.
Try .Refresh() method, also set the .DoubleBuffer property to false. Or you can write code for custom painting.

How do I move a tooltip?

I'm using the CellToolTipTextNeeded event of a DataGridView, and the tooltip is being shown under the mouse. I can get the ToolTip object out via reflection, but I don't have any control over where it's positioned since I'm not the one calling Show(). How do I move a tooltip?
How about a custom one?
I think the short answer is: you can't, not yet anyway. I would probably think about building a custom one like 'unknown (yahoo)' suggested.
You'll have to control the tooltip yourself using the Show and Hide methods if you want any control over how and where it is positioned using the 2.0 framework unless you want to get into Window's API calls.
Unfortunately, it looks like the tooltip position is set very, very early on in its creation. The tooltip only has 3 events to handle, and we aren't very interested in Dispose in this case.
The Draw event is fired after the Popup event and it seems as if the position has already been set as the Bounds property in the PopupEventArgs is readonly.
Here's a link to one of many articles (at the time of this post) on creating a custom control:
http://andrusdevelopment.blogspot.com/2007/10/implementing-custom-tooltip-in-c.html
And the MSDN documentation on using the tooltip's Show and Hide methods is actually fairly decent:
http://msdn.microsoft.com/en-us/library/44atyhsa(VS.80,printer).aspx
Sorry, but it just doesn't look like there is a quick and easy answer to this one. Hopefully someone will prove me wrong for both are sakes.
Scott
There is a good answer at this link that uses a Tooltip object.
How to override default tooltip behavior of a C# datagridview to increase the tooltip delay for particular cells

Categories