Moving List View items from one list to another
Before thinking about how to write this in a more elegant way, you should first ask yourself: is this code actually correct? The “problem” with that code is that you're iterating the collection you're modifying. Quite often (for example in the case of List&lt;T&gt;), that's not allowed and your foreach would throw an exception. Fortunately for you, the enumerator of ListViewItemCollection iterates over a snapshot of the collection of the items, so your code will actually work fine (although I didn't find this behavior documented anywhere).

Now, if you want to refactor code like this, just have a look at what's the same and what's different. You can notice that the only different thing in the two branches is the source of the foreach. So, just create a local variable for it, set it correctly and then have common code that iterates it:

private static void MoveItem(ListView source, ListView dest, bool all)
{
    var items = all ? source.Items : source.SelectedItems;

    foreach (ListViewItem item in items)
    {
        source.Items.Remove(item);
        dest.Items.Add(item);
    }
}