Initial: static site migrated from S3

This commit is contained in:
Jarvis Prime
2026-03-23 16:10:59 +00:00
commit ca8d059a9f
275 changed files with 55854 additions and 0 deletions

525
blog/feed/index.html Normal file
View File

@@ -0,0 +1,525 @@
<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
xmlns:content="http://purl.org/rss/1.0/modules/content/"
xmlns:wfw="http://wellformedweb.org/CommentAPI/"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:atom="http://www.w3.org/2005/Atom"
xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
>
<channel>
<title>Owl&#039;s Blog on .NET development</title>
<atom:link href="http://www.componentowl.com/blog/feed/" rel="self" type="application/rss+xml" />
<link>http://www.componentowl.com/blog</link>
<description>Component Owl codes Better ListView control all night so you don&#039;t have to.</description>
<lastBuildDate>Tue, 04 Sep 2018 13:10:05 +0000</lastBuildDate>
<language>en-US</language>
<sy:updatePeriod>hourly</sy:updatePeriod>
<sy:updateFrequency>1</sy:updateFrequency>
<generator>https://wordpress.org/?v=4.9.8</generator>
<item>
<title>Activation issues and how to solve them</title>
<link>http://www.componentowl.com/blog/activation-issues-and-how-to-solve-them/</link>
<comments>http://www.componentowl.com/blog/activation-issues-and-how-to-solve-them/#respond</comments>
<pubDate>Wed, 01 Mar 2017 17:22:52 +0000</pubDate>
<dc:creator><![CDATA[Brian Galura]]></dc:creator>
<category><![CDATA[Better ListView]]></category>
<category><![CDATA[Components]]></category>
<guid isPermaLink="false">http://www.componentowl.com/blog/?p=927</guid>
<description><![CDATA[Dear Readers, Periodically we get emails from users having problems with the activation. So we put together a check list on how to deal with the most frequent issues. In case these fixes do not help you solve your problem, please contact contact support at support@componentowl.com and we will be happy to help you out. [&#8230;]]]></description>
<content:encoded><![CDATA[<p>Dear Readers,<br />
Periodically we get emails from users having problems with the activation. So we put together a check list on how to deal with the most frequent issues. In case these fixes do not help you solve your problem, please contact contact support at <a href="mailto:support@componentowl.com">support@componentowl.com</a> and we will be happy to help you out.<br />
Below, you will find some obstacles we have stumbled across in the past.</p>
<ol>
<li>Try to <strong>rebuild</strong> the project/solution</li>
<li><strong>Restart</strong> Visual Studio if rebuilding the solution did not stop the nag screen</li>
<li>If you use Better ListView in a Class Library project, it should be referenced and activated in both, the main project and the Class Library project.</li>
<li>Do the main project (executable) and all referenced projects contain the <strong>licenses.licx</strong> file within the Properties folder? If not, rebuild the main project (executable) and copy the licenses.licx file to the appropriate location in all referenced projects (Class Library or other executables).</li>
<li>The licenses.licx file should contain only a <strong>single reference</strong> to Better ListView with the current version number (e.g. ComponentOwl.BetterListView.BetterListView, BetterListView, Version=3.7.2.0, Culture=neutral, PublicKeyToken=e6c91a3add447be2). If there are more lines referencing Better ListView, remove the obsolete ones. You can also delete the licenses.licx file and rebuild the project to regenerate it.</li>
<li>Run the <strong>Activator</strong> application (installed along with the product) and check if it displays a valid license (license info should be displayed in green).</li>
<li>You can try to finish the activation via the <strong>Activator app</strong> and then rebuild the main project. The Activator allows custom proxy settings for activation from behind a web proxy (often present in corporate environments).</li>
<li>Check, if the <strong>license-blv.dat</strong> file is present in the &#8220;C:\ProgramData\Component Owl\&#8221; folder after activation. If not, please contact support at support@componentowl.com</li>
<li>Check, if your projects reference the <strong>same version</strong> of Better ListView as the one that is installed. Open the „Reference Properties“ window by right clicking on Better ListView reference in the Solution Explorer. Then check if there is a Specific Version property set to true. If so, remove the reference and add a new reference to Better ListView with the correct version. You can also just set Specific Version property to false.</li>
<li>The Better ListView has to be activated on each machine where it is built. Do not copy the license-blv.dat file because this is <strong>specific</strong> to each machine. Rather follow the activation process on each machine.</li>
</ol>
<p>We hope these clues can help you, in case you encounter a problem during the activation. As mentioned before, please contact support, if the issues persist.</p>
]]></content:encoded>
<wfw:commentRss>http://www.componentowl.com/blog/activation-issues-and-how-to-solve-them/feed/</wfw:commentRss>
<slash:comments>0</slash:comments>
</item>
<item>
<title>The Three Main Advantages Better ListView has Over the Classic .NET Framework</title>
<link>http://www.componentowl.com/blog/the-three-main-advantages-componentowl-has-over-the-classic-net-framework/</link>
<comments>http://www.componentowl.com/blog/the-three-main-advantages-componentowl-has-over-the-classic-net-framework/#respond</comments>
<pubDate>Thu, 09 Feb 2017 21:51:12 +0000</pubDate>
<dc:creator><![CDATA[Brian Galura]]></dc:creator>
<category><![CDATA[Better ListView]]></category>
<guid isPermaLink="false">http://www.componentowl.com/blog/?p=921</guid>
<description><![CDATA[Dear Readers, When evaluating an alternative to replace the .NET ListView you might stumble upon the question: what sets the different solutions available apart from each other? Which one meets my demands the best? Here are the three main reasons we think Better ListView is the ideal solution for you if you are planning to [&#8230;]]]></description>
<content:encoded><![CDATA[<p>Dear Readers,<br />
When evaluating an alternative to replace the .NET ListView you might stumble upon the question: what sets the different solutions available apart from each other? Which one meets my demands the best?<br />
Here are the three main reasons we think Better ListView is the ideal solution for you if you are planning to use a professional alternative:</p>
<p><strong>1) The intuitive approach on getting started</strong></p>
<p>The good thing is, you can get started right away. Due to the build-up of processes, as well as the well documented procedures you have almost no learning period. Component Owl keeps its design close to the original .NET ListView so you do not have to get acquainted to a completely new system. But still, the changes made are substantial enough to make your working routine so much easier. Whether its the inbuilt drag &#038; drop, the sub-item images or the multi-column sorting, the processes are meant to make your life easier.</p>
<p><strong>2) The fast and helpful support</strong></p>
<p>As Component Owl has been on the market for quite a while now, it has been further developed and improved countless times, resulting in a detailed and meaningful FAQ which answer to the majority of your questions. In case you cannot find the answer you need, you can rely on our support system which will give you feedback on you request within 24 hours. This allows you to keep the workflow going with almost no interruptions and puts you ahead of the freeware users.</p>
<p><strong>3) The possibility to customize</strong></p>
<p>Just like every developer has his own style of working, Component Owl can be customized to every user needs. The many opportunities to adapt your surface to your favorite design or to arrange the necessary tools the way you need them, allows you to optimize your workflow to perform even better.</p>
<p>These 3 named advantages are just a few of the many that Component Owl offers you. For more infromation just <a href="http://www.componentowl.com/better-listview">check out</a> our trial version to see for yourself.</p>
]]></content:encoded>
<wfw:commentRss>http://www.componentowl.com/blog/the-three-main-advantages-componentowl-has-over-the-classic-net-framework/feed/</wfw:commentRss>
<slash:comments>0</slash:comments>
</item>
<item>
<title>BLV and Internet Explorer</title>
<link>http://www.componentowl.com/blog/blv-and-internet-explorer/</link>
<comments>http://www.componentowl.com/blog/blv-and-internet-explorer/#respond</comments>
<pubDate>Sun, 13 Nov 2016 22:37:47 +0000</pubDate>
<dc:creator><![CDATA[Brian Galura]]></dc:creator>
<category><![CDATA[Better ListView]]></category>
<category><![CDATA[Programming]]></category>
<guid isPermaLink="false">http://www.componentowl.com/blog/?p=914</guid>
<description><![CDATA[As you all know we are constantly working on improving BetterListView, but once in a while you might encounter a problem which has not found its way to our documentation yet.
Today, our blog post covers an interesting case when using Internet Explorer.]]></description>
<content:encoded><![CDATA[<p>As you all know we are constantly working on improving BetterListView, but once in a while you might encounter a problem which has not found its way to our documentation yet.</p>
<p>Today, our blog post covers an interesting case when using Internet Explorer.<br />
When instantiating an ActiveX control written as a .NET assembly exposed via Interop you might get the following message:</p>
<p><code>System.IO.FileNotFoundException("Could not load file or assembly 'BetterListView, Version=3.8.2.0, Culture=neutral, PublicKeyToken=xxxxxxxxxxxxxxxx' or one of its dependencies. The system cannot find the file specified.")</code></p>
<p>The solution to this problem is a fairly simple one, quoting from an <a href="https://msdn.microsoft.com/en-us/library/tzat5yw6">MSDN article</a>:<br />
&#8220;&#8230; you can install it in the global assembly cache so that it can be activated from any COM client. If the assembly is only going to be activated by a single application, you can place it in that application&#8217;s directory.&#8221;</p>
<p>Concluding from this short excerpt, you are basically left you with two options:<br />
1) You may register BetterListView in GAC if it is to be shared. But you should be careful with GAC because it allows holding multiple versions of the same assembly. You can make the installer remove any older versions from GAC during installation and add/keep just the newest one.<br />
2) You can put your .net assembly with all third-party DLLs in one directory during installation if it is to be private.</p>
<p>We recommend the second solution as we reckon it to be the safer one.</p>
]]></content:encoded>
<wfw:commentRss>http://www.componentowl.com/blog/blv-and-internet-explorer/feed/</wfw:commentRss>
<slash:comments>0</slash:comments>
</item>
<item>
<title>Centering Images in Better ListView Sub-items</title>
<link>http://www.componentowl.com/blog/centering-images-in-better-listview-sub-items/</link>
<comments>http://www.componentowl.com/blog/centering-images-in-better-listview-sub-items/#respond</comments>
<pubDate>Wed, 06 Aug 2014 21:14:10 +0000</pubDate>
<dc:creator><![CDATA[Libor Tinka]]></dc:creator>
<category><![CDATA[Better ListView]]></category>
<category><![CDATA[Tutorials]]></category>
<category><![CDATA[align]]></category>
<category><![CDATA[better listview]]></category>
<category><![CDATA[center]]></category>
<category><![CDATA[column]]></category>
<category><![CDATA[columns]]></category>
<category><![CDATA[header]]></category>
<category><![CDATA[image]]></category>
<category><![CDATA[images]]></category>
<category><![CDATA[layout]]></category>
<category><![CDATA[sub-item]]></category>
<category><![CDATA[sub-items]]></category>
<category><![CDATA[subitem]]></category>
<category><![CDATA[subitems]]></category>
<guid isPermaLink="false">http://www.componentowl.com/blog/?p=906</guid>
<description><![CDATA[How to align images to center in Better ListView sub-items and columns.]]></description>
<content:encoded><![CDATA[<div id="attachment_907" style="width: 380px" class="wp-caption aligncenter"><a href="http://www.componentowl.com/blog/wp-content/uploads/2014/08/blv-overlay.png"><img class="size-full wp-image-907" title="Centered images in Better ListView" src="http://www.componentowl.com/blog/wp-content/uploads/2014/08/blv-overlay.png" alt="Centered images in Better ListView" width="370" height="162" /></a><p class="wp-caption-text">Centered images in Better ListView</p></div>
<p>Better ListView 3.11 supports aligning images in sub-items and columns to center. Simply set <strong>AlignHorizontalImage</strong> property of an sub-item or column to <strong>BetterListViewImageAlignmentHorizontal.OverlayCenter</strong>.</p>
<p>The image will be centered inside available space regardless of text.</p>
<p>This is useful for sub-items and column headers consisting of image only.</p>
]]></content:encoded>
<wfw:commentRss>http://www.componentowl.com/blog/centering-images-in-better-listview-sub-items/feed/</wfw:commentRss>
<slash:comments>0</slash:comments>
</item>
<item>
<title>Sub-item Check Boxes in Better ListView</title>
<link>http://www.componentowl.com/blog/sub-item-check-boxes-in-better-listview/</link>
<comments>http://www.componentowl.com/blog/sub-item-check-boxes-in-better-listview/#respond</comments>
<pubDate>Sun, 06 Jul 2014 21:48:41 +0000</pubDate>
<dc:creator><![CDATA[Libor Tinka]]></dc:creator>
<category><![CDATA[Announcements]]></category>
<category><![CDATA[Better ListView]]></category>
<category><![CDATA[Tutorials]]></category>
<category><![CDATA[better]]></category>
<category><![CDATA[box]]></category>
<category><![CDATA[boxes]]></category>
<category><![CDATA[buttons]]></category>
<category><![CDATA[cell]]></category>
<category><![CDATA[cells]]></category>
<category><![CDATA[check]]></category>
<category><![CDATA[checkbox]]></category>
<category><![CDATA[checkboxes]]></category>
<category><![CDATA[listview]]></category>
<category><![CDATA[radio]]></category>
<category><![CDATA[radios]]></category>
<category><![CDATA[sub-item]]></category>
<category><![CDATA[subitem]]></category>
<category><![CDATA[subitems]]></category>
<guid isPermaLink="false">http://www.componentowl.com/blog/?p=901</guid>
<description><![CDATA[How to display fully interactive check boxes and radio buttons in Better ListView sub-items.]]></description>
<content:encoded><![CDATA[<div id="attachment_902" style="width: 395px" class="wp-caption aligncenter"><a href="http://www.componentowl.com/blog/wp-content/uploads/2014/07/blv-sub-item-checkboxes.png"><img class="size-full wp-image-902" title="blv-sub-item-checkboxes" src="http://www.componentowl.com/blog/wp-content/uploads/2014/07/blv-sub-item-checkboxes.png" alt="Better ListView Sub-item Check Boxes" width="385" height="82" /></a><p class="wp-caption-text">Better ListView Sub-item Check Boxes</p></div>
<p><a href="http://www.componentowl.com/betterlistview.exe">Better ListView 3.10.0</a> allows displaying fully interactive check boxes and even radio buttons in sub-item cells.</p>
<p>This feature can be activated simply by setting <strong>CheckBoxAppearance</strong> property of a given sub-item to other value than <strong>Hide</strong>. Such sub-item will not display check box or radio instead of image and text.</p>
<p>Please note the first sub-item&#8217;s properties do not apply as they are overriden by item&#8217;s properties. These two are separate for the case of column reordering (keeping consistency of sub-item states).</p>
<p>Another new feature in Better ListView is that check boxes or radios can be displayed disabled. This can be achieved by setting <strong>CheckEnabled</strong> property to <strong>false</strong> on the respective item or sub-item.</p>
<p>Sub-item check boxes can be operated by both mouse and keyboard. Checking sub-item with keyboard can be done by navigating focus rectangle by arrow keys to the given sub-item and pressing spacebar.</p>
]]></content:encoded>
<wfw:commentRss>http://www.componentowl.com/blog/sub-item-check-boxes-in-better-listview/feed/</wfw:commentRss>
<slash:comments>0</slash:comments>
</item>
<item>
<title>How to Add Grid Lines in Empty Space in Better ListView</title>
<link>http://www.componentowl.com/blog/how-to-add-grid-lines-in-empty-space-in-better-listview/</link>
<comments>http://www.componentowl.com/blog/how-to-add-grid-lines-in-empty-space-in-better-listview/#respond</comments>
<pubDate>Wed, 30 Apr 2014 09:51:46 +0000</pubDate>
<dc:creator><![CDATA[Libor Tinka]]></dc:creator>
<category><![CDATA[Better ListView]]></category>
<category><![CDATA[Tutorials]]></category>
<category><![CDATA[below]]></category>
<category><![CDATA[better]]></category>
<category><![CDATA[empty]]></category>
<category><![CDATA[grid]]></category>
<category><![CDATA[gridlines]]></category>
<category><![CDATA[lines]]></category>
<category><![CDATA[listview]]></category>
<category><![CDATA[space]]></category>
<guid isPermaLink="false">http://www.componentowl.com/blog/?p=894</guid>
<description><![CDATA[How to draw grid lines below last item in Better ListView]]></description>
<content:encoded><![CDATA[<div id="attachment_895" style="width: 271px" class="wp-caption aligncenter"><a href="http://www.componentowl.com/blog/wp-content/uploads/2014/04/blv-gridlines-1.png"><img class="size-full wp-image-895 " title="Default list without grid lines below items" src="http://www.componentowl.com/blog/wp-content/uploads/2014/04/blv-gridlines-1.png" alt="Default list without grid lines below items" width="261" height="308" /></a><p class="wp-caption-text">Default list without grid lines below items</p></div>
<div id="attachment_896" style="width: 271px" class="wp-caption aligncenter"><a href="http://www.componentowl.com/blog/wp-content/uploads/2014/04/blv-gridlines-2.png"><img class=" wp-image-896 " title="List with grid lines added" src="http://www.componentowl.com/blog/wp-content/uploads/2014/04/blv-gridlines-2.png" alt="List with grid lines added" width="261" height="308" /></a><p class="wp-caption-text">List with grid lines added</p></div>
<p style="text-align: center;">
<p>Setting grid lines in Better ListView is easy. Simply make sure you are using <strong>Details</strong> view (the default view). Then you can set <strong>GridLines</strong> property to one of the following values:</p>
<ul>
<li><strong>None</strong> &#8211; grid lines are hidden</li>
<li><strong>Horizontal</strong> &#8211; only horizontal lines are displayed</li>
<li><strong>Vertical</strong> &#8211; only vertical lines are displayed</li>
<li><strong>Grid</strong> &#8211; both horizontal and vertical lines are displayed, forming a grid</li>
</ul>
<p>None of these settings, however, cause drawing lines <em>below</em> the last visible item, which may be desirable. The reason for this is that Better ListView supports <a href="http://www.componentowl.com/blog/custom-item-height-in-details-view-of-better-listview/">custom item height</a> and there is uncertainity about the spacing between new grid lines (smallest?, largest?, average?) It is up to your choice.</p>
<p>To draw new grid lines, handle the <strong>DrawBackground</strong> event (or subclass BetterListView and override the <strong>OnDrawBackground</strong> method) with the following code:</p>
<p>[csharp gutter=&#8221;false&#8221; toolbar=&#8221;false&#8221;]<br />
private void ListViewOnDrawBackground(object sender, BetterListViewDrawBackgroundEventArgs eventArgs)<br />
{<br />
BetterListView listView = (BetterListView)sender;</p>
<p> // get last visible item<br />
var item = listView.BottomItem;</p>
<p> if (item == null)<br />
{<br />
return;<br />
}</p>
<p> // measure row height<br />
var bounds = listView.GetItemBounds(item);<br />
int rowHeight = bounds.BoundsOuterExtended.Height;</p>
<p> // draw additional lines<br />
Rectangle rectClient = listView.ClientRectangleInner;<br />
Pen penGridLines = new Pen(listView.ColorGridLines, 1.0f);</p>
<p> int y = (bounds.BoundsOuterExtended.Bottom + rowHeight);</p>
<p> while (y < rectClient.Bottom)
{
eventArgs.Graphics.DrawLine(
penGridLines,
rectClient.Left,
y,
rectClient.Right - 1,
y);
y += rowHeight;
}
penGridLines.Dispose();
}
[/csharp]
What this code does is getting the last visible item using <strong>BottomItem</strong> property. It is important  to get this visible item instead of e.g. first item because <strong>GetItemBounds</strong> method returns non-null value on visible items only. The <strong>GetItemBounds</strong> method reveals item measurement which is used to determine item height and coordinate of its bottom. Finally, we draw new lines using current grid line color  (<strong>ColorGridLines</strong> property) until reaching the bottom of the view.</p>
]]></content:encoded>
<wfw:commentRss>http://www.componentowl.com/blog/how-to-add-grid-lines-in-empty-space-in-better-listview/feed/</wfw:commentRss>
<slash:comments>0</slash:comments>
</item>
<item>
<title>Alternating Rows in Better ListView</title>
<link>http://www.componentowl.com/blog/alternating-rows-in-better-listview/</link>
<comments>http://www.componentowl.com/blog/alternating-rows-in-better-listview/#respond</comments>
<pubDate>Tue, 22 Apr 2014 22:38:15 +0000</pubDate>
<dc:creator><![CDATA[Libor Tinka]]></dc:creator>
<category><![CDATA[Better ListView]]></category>
<category><![CDATA[Tutorials]]></category>
<category><![CDATA[alternating]]></category>
<category><![CDATA[better listview]]></category>
<category><![CDATA[colored]]></category>
<category><![CDATA[colors]]></category>
<category><![CDATA[even]]></category>
<category><![CDATA[odd]]></category>
<category><![CDATA[rows]]></category>
<guid isPermaLink="false">http://www.componentowl.com/blog/?p=888</guid>
<description><![CDATA[How to set up alternating row colors in Better ListView]]></description>
<content:encoded><![CDATA[<div id="attachment_889" style="width: 234px" class="wp-caption aligncenter"><a href="http://www.componentowl.com/blog/wp-content/uploads/2014/04/blv-alternating-rows.png"><img class="size-full wp-image-889" title="Alternating Rows" src="http://www.componentowl.com/blog/wp-content/uploads/2014/04/blv-alternating-rows.png" alt="Alternating Rows" width="224" height="220" /></a><p class="wp-caption-text">Alternating Rows</p></div>
<p>Lists with alternating row colors are more readable. It is very simple to implement alternating rows in Better ListView.</p>
<p>Simply add <strong>DrawItemBackground</strong> event handler and fill background on odd/even items:</p>
<p>&nbsp;</p>
<p>[csharp gutter=&#8221;false&#8221; toolbar=&#8221;false&#8221;]<br />
private void ListViewOnDrawItemBackground(object sender, BetterListViewDrawItemBackgroundEventArgs eventArgs)<br />
{<br />
if ((eventArgs.Item.Index &#038; 1) == 1)<br />
{<br />
eventArgs.Graphics.FillRectangle(Brushes.AliceBlue, eventArgs.ItemBounds.BoundsOuter);<br />
}<br />
}<br />
[/csharp]</p>
]]></content:encoded>
<wfw:commentRss>http://www.componentowl.com/blog/alternating-rows-in-better-listview/feed/</wfw:commentRss>
<slash:comments>0</slash:comments>
</item>
<item>
<title>Search Filtering in Better ListView</title>
<link>http://www.componentowl.com/blog/search-filtering-in-better-listview/</link>
<comments>http://www.componentowl.com/blog/search-filtering-in-better-listview/#comments</comments>
<pubDate>Mon, 03 Feb 2014 14:58:30 +0000</pubDate>
<dc:creator><![CDATA[Libor Tinka]]></dc:creator>
<category><![CDATA[Better ListView]]></category>
<category><![CDATA[Tutorials]]></category>
<guid isPermaLink="false">http://www.componentowl.com/blog/?p=882</guid>
<description><![CDATA[How to improve item searching with highlights and dynamic filtering in Better ListView.]]></description>
<content:encoded><![CDATA[<div id="attachment_883" style="width: 93px" class="wp-caption aligncenter"><a href="http://www.componentowl.com/blog/wp-content/uploads/2014/02/image.gif"><img class="size-full wp-image-883" title="Search Filtering" src="http://www.componentowl.com/blog/wp-content/uploads/2014/02/image.gif" alt="Search Filtering" width="83" height="153" /></a><p class="wp-caption-text">Search Filtering with highlight</p></div>
<p>There are few ways of making searching in large list of items more convenient. For example, Better ListView provides <strong>Search Highlighting</strong> and <strong>Item Hiding</strong> features that can be used to improve searching. The above animation shows both of these features in action when searching for a word &#8220;pear&#8221; using keyboard.</p>
<p>The implementation is very simple and involves handling just two events: <strong>ItemSearch</strong> (raised whenever item is searched, e.g. using keyboard ) and <strong>KeyDown</strong>:</p>
<p>[csharp gutter=&#8221;false&#8221; toolbar=&#8221;false&#8221;]<br />
var listView = new BetterListView();</p>
<p>listView.Items.AddRange(new[] { &#8220;apple&#8221;, &#8220;pear&#8221;, &#8220;pineapple&#8221;, &#8220;orange&#8221;, &#8220;grapefruit&#8221;, &#8220;cherry&#8221;, &#8220;avocado&#8221; });</p>
<p>listView.ItemSearch += listView_ItemSearch;<br />
listView.KeyDown += listView_KeyDown;<br />
[/csharp]</p>
<p>The ItemSearch event handler finds matching items and sets their visibility accordingly. It also updates the highlighting:</p>
<p>[csharp gutter=&#8221;false&#8221; toolbar=&#8221;false&#8221;]<br />
void listView_ItemSearch(object sender, BetterListViewItemSearchEventArgs eventArgs)<br />
{<br />
var listView = (BetterListView)sender;</p>
<p> listView.BeginUpdate();</p>
<p> // update item visibility according to search query string<br />
foreach (var item in listView.Items)<br />
{<br />
bool match = item.Text.Contains(eventArgs.QueryString);</p>
<p> if (match)<br />
{<br />
item.Visible = true;</p>
<p> item.SearchHighlight = new BetterListViewSearchHighlight(<br />
0,<br />
item.Text.IndexOf(eventArgs.QueryString, StringComparison.Ordinal),<br />
eventArgs.QueryString.Length);<br />
}<br />
else<br />
{<br />
item.Visible = false;<br />
}<br />
}</p>
<p> listView.EndUpdate();<br />
}<br />
[/csharp]</p>
<p>Finally, the KeyDown event handler resets the view when Escape key is pressed (all items are made visible and the highlight is removed):</p>
<p>[csharp gutter=&#8221;false&#8221; toolbar=&#8221;false&#8221;]<br />
void listView_KeyDown(object sender, KeyEventArgs e)<br />
{<br />
var listView = (BetterListView)sender;</p>
<p> listView.BeginUpdate();</p>
<p> if (e.KeyCode == Keys.Escape)<br />
{<br />
// remove search highlight<br />
//NOTE: we could use BetterListView.RemoveSearchHighlight() but this applies to visible items only and some items are hidden at the time<br />
foreach (var item in listView.Items)<br />
{<br />
item.SearchHighlight = BetterListViewSearchHighlight.Empty;<br />
}</p>
<p> // make all items visible<br />
foreach (var item in listView.Items)<br />
{<br />
item.Visible = true;<br />
}</p>
<p> // mark the key as handled<br />
e.Handled = true;</p>
<p> // suppress KeyPress event to prevent ItemSearch from happening<br />
e.SuppressKeyPress = true;<br />
}</p>
<p> listView.EndUpdate();<br />
}<br />
[/csharp]</p>
<p>And that&#8217;s it!</p>
]]></content:encoded>
<wfw:commentRss>http://www.componentowl.com/blog/search-filtering-in-better-listview/feed/</wfw:commentRss>
<slash:comments>2</slash:comments>
</item>
<item>
<title>Custom Scroll Bar Size in Better ListView</title>
<link>http://www.componentowl.com/blog/custom-scroll-bar-size-in-better-listview/</link>
<comments>http://www.componentowl.com/blog/custom-scroll-bar-size-in-better-listview/#comments</comments>
<pubDate>Tue, 19 Mar 2013 15:56:22 +0000</pubDate>
<dc:creator><![CDATA[Libor Tinka]]></dc:creator>
<category><![CDATA[Better ListView]]></category>
<category><![CDATA[Components]]></category>
<category><![CDATA[Tutorials]]></category>
<category><![CDATA[bars]]></category>
<category><![CDATA[better listview]]></category>
<category><![CDATA[custom]]></category>
<category><![CDATA[height]]></category>
<category><![CDATA[large]]></category>
<category><![CDATA[larger]]></category>
<category><![CDATA[scroll]]></category>
<category><![CDATA[scrollbar]]></category>
<category><![CDATA[scrollbars]]></category>
<category><![CDATA[size]]></category>
<category><![CDATA[sizes]]></category>
<category><![CDATA[width]]></category>
<guid isPermaLink="false">http://www.componentowl.com/blog/?p=878</guid>
<description><![CDATA[How to make custom-sized scroll bars in Better ListView.]]></description>
<content:encoded><![CDATA[<div id="attachment_879" style="width: 319px" class="wp-caption aligncenter"><a href="http://www.componentowl.com/blog/wp-content/uploads/2013/03/blv-scroll-size.png"><img class="size-full wp-image-879" title="Better ListView custom scroll bar size" src="http://www.componentowl.com/blog/wp-content/uploads/2013/03/blv-scroll-size.png" alt="Better ListView custom scroll bar size" width="309" height="208" /></a><p class="wp-caption-text">Better ListView custom scroll bar size</p></div>
<p><a href="http://www.componentowl.com/betterlistview.exe">Better ListView 3.7.0</a> contains two new properties that allow you to set custom horizontal and vertical scroll bar sizes:</p>
<ul>
<li><strong>HScrollBarWidth</strong></li>
<li><strong>VScrollBarHeight</strong></li>
</ul>
<p>Of course, you can set these custom sizes in design-time as well as in run-time.</p>
<p>Larger scroll bars are practical on modern touch-enabled devices with high resolution screens. The default scroll bar size (17 pixels) may be too small and you may want to make it just large enough for your index finger.</p>
<p>This features works in both <a href="http://www.componentowl.com/better-listview">Better ListView</a> and <a href="http://www.componentowl.com/better-listview-express">Better ListView Express</a>.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
]]></content:encoded>
<wfw:commentRss>http://www.componentowl.com/blog/custom-scroll-bar-size-in-better-listview/feed/</wfw:commentRss>
<slash:comments>4</slash:comments>
</item>
<item>
<title>How to Make Items Fading on Edges in Better ListView</title>
<link>http://www.componentowl.com/blog/how-to-make-items-fading-on-edges-in-better-listview/</link>
<comments>http://www.componentowl.com/blog/how-to-make-items-fading-on-edges-in-better-listview/#respond</comments>
<pubDate>Tue, 05 Mar 2013 15:45:22 +0000</pubDate>
<dc:creator><![CDATA[Libor Tinka]]></dc:creator>
<category><![CDATA[Better ListView]]></category>
<category><![CDATA[Tutorials]]></category>
<category><![CDATA[better listview]]></category>
<category><![CDATA[borders]]></category>
<category><![CDATA[boundaries]]></category>
<category><![CDATA[drawing]]></category>
<category><![CDATA[drawn]]></category>
<category><![CDATA[edge]]></category>
<category><![CDATA[edges]]></category>
<category><![CDATA[fading]]></category>
<category><![CDATA[gradient]]></category>
<category><![CDATA[items]]></category>
<category><![CDATA[over]]></category>
<category><![CDATA[owner]]></category>
<category><![CDATA[ownerdrawing]]></category>
<category><![CDATA[ownerdrawn]]></category>
<guid isPermaLink="false">http://www.componentowl.com/blog/?p=868</guid>
<description><![CDATA[How to create the effect seen on smarphones when items are fading on control's edges with WinForms Better ListView.]]></description>
<content:encoded><![CDATA[<p><img class="size-full wp-image-869 centered" title="Fading Edges in Better ListView" src="http://www.componentowl.com/blog/wp-content/uploads/2013/03/blv-fading.png" alt="Fading Edges in Better ListView" width="140" height="148" /></p>
<p>I found the effect of fading borders impressive on my smartphone. This is actualy very easy to do as it requires a simple gradient brush.</p>
<p>You can obtain the same effect with Better ListView by overriding the <strong>DrawingRedrawCore</strong> method and do the drawing over the items:</p>
<p><strong>C#</strong></p>
<p>[csharp gutter=&#8221;false&#8221; toolbar=&#8221;false&#8221;]<br />
public class FadedListView : BetterListView<br />
{<br />
/// </p>
<summary>
/// Default size of the fading gradient.<br />
/// </summary>
<p> private const int FadingSize = 64;</p>
<p> public CustomListView()<br />
{<br />
// this is required because we will draw outside item boundaries<br />
OptimizedInvalidation = false;<br />
}</p>
<p> protected override void DrawingRedrawCore(Graphics graphics)<br />
{<br />
base.DrawingRedrawCore(graphics);</p>
<p> // get boundaries of items (this excludes column headers and scroll bars)<br />
Rectangle rectContent = BoundsContent;</p>
<p> // get size of the gradient<br />
int fadingSize = Math.Min(<br />
FadingSize,<br />
rectContent.Height >> 1);</p>
<p> // get boundaries of the gradents<br />
Rectangle rectFadingTop = new Rectangle(<br />
rectContent.Left,<br />
rectContent.Top,<br />
rectContent.Width,<br />
fadingSize);</p>
<p> Rectangle rectFadingBottom = new Rectangle(<br />
rectContent.Left,<br />
rectContent.Bottom &#8211; fadingSize,<br />
rectContent.Width,<br />
fadingSize);</p>
<p> // make boundaries larger to avoid rounding errors in gradient brushes<br />
rectFadingTop.Inflate(1, 1);<br />
rectFadingBottom.Inflate(1, 1);</p>
<p> Brush brushFadingTop = new LinearGradientBrush(rectFadingTop, BackColor, Color.Transparent, LinearGradientMode.Vertical);<br />
Brush brushFadingBottom = new LinearGradientBrush(rectFadingBottom, Color.Transparent, SystemColors.Window, LinearGradientMode.Vertical);</p>
<p> // deflate the gradient boundaries back<br />
rectFadingTop.Inflate(-1, -1);<br />
rectFadingBottom.Inflate(-1, -1);</p>
<p> // draw the gradients<br />
graphics.FillRectangle(brushFadingTop, rectFadingTop);<br />
graphics.FillRectangle(brushFadingBottom, rectFadingBottom);</p>
<p> // cleanup<br />
brushFadingTop.Dispose();<br />
brushFadingBottom.Dispose();<br />
}<br />
}<br />
[/csharp]</p>
<p><strong>Visual Basic</strong></p>
<p>[vb gutter=&#8221;false&#8221; toolbar=&#8221;false&#8221;]<br />
Public Class CustomListView<br />
Inherits BetterListView<br />
&#8221;&#8217; </p>
<summary>
&#8221;&#8217; Default size of the fading gradient.<br />
&#8221;&#8217; </summary>
<p> Private Const FadingSize As Integer = 64</p>
<p> Public Sub New()<br />
&#8216; this is required because we will draw outside item boundaries<br />
OptimizedInvalidation = False<br />
End Sub</p>
<p> Protected Overrides Sub DrawingRedrawCore(graphics As Graphics)<br />
MyBase.DrawingRedrawCore(graphics)</p>
<p> &#8216; get boundaries of items (this excludes column headers and scroll bars)<br />
Dim rectContent As Rectangle = BoundsContent</p>
<p> &#8216; get size of the gradient<br />
Dim fadingSize__1 As Integer = Math.Min(FadingSize, rectContent.Height >> 1)</p>
<p> &#8216; get boundaries of the gradents<br />
Dim rectFadingTop As New Rectangle(rectContent.Left, rectContent.Top, rectContent.Width, fadingSize__1)</p>
<p> Dim rectFadingBottom As New Rectangle(rectContent.Left, rectContent.Bottom &#8211; fadingSize__1, rectContent.Width, fadingSize__1)</p>
<p> &#8216; make boundaries larger to avoid rounding errors in gradient brushes<br />
rectFadingTop.Inflate(1, 1)<br />
rectFadingBottom.Inflate(1, 1)</p>
<p> Dim brushFadingTop As Brush = New LinearGradientBrush(rectFadingTop, BackColor, Color.Transparent, LinearGradientMode.Vertical)<br />
Dim brushFadingBottom As Brush = New LinearGradientBrush(rectFadingBottom, Color.Transparent, SystemColors.Window, LinearGradientMode.Vertical)</p>
<p> &#8216; deflate the gradient boundaries back<br />
rectFadingTop.Inflate(-1, -1)<br />
rectFadingBottom.Inflate(-1, -1)</p>
<p> &#8216; draw the gradients<br />
graphics.FillRectangle(brushFadingTop, rectFadingTop)<br />
graphics.FillRectangle(brushFadingBottom, rectFadingBottom)</p>
<p> &#8216; cleanup<br />
brushFadingTop.Dispose()<br />
brushFadingBottom.Dispose()<br />
End Sub<br />
End Class<br />
[/vb]</p>
]]></content:encoded>
<wfw:commentRss>http://www.componentowl.com/blog/how-to-make-items-fading-on-edges-in-better-listview/feed/</wfw:commentRss>
<slash:comments>0</slash:comments>
</item>
</channel>
</rss>
<!--
Performance optimized by W3 Total Cache. Learn more: https://www.w3-edge.com/products/
Content Delivery Network via Amazon Web Services: S3: www.componentowl.com
Served from: www.componentowl.com @ 2018-09-08 11:36:58 by W3 Total Cache
-->