How would I do this ...
well I'd forget about listboxes and their related functions.
Just do it from files.
read in a line, chop it about @ and save it in a 2d arraylist (or array).
then you can use super fast code to loop and compere.
I don't really understand your criteria for what is or isn't allowed .... if the domain isn't important then just chop around @ and save the first half.
The just loop through one array checking if it exists in the other.
Or there are bubble sorts and so forth available - or there are array sorts available withinn .NET that can get rid of duplicate and so forth.
Should be pretty easy. Enjoy the exploration.
To convert a form to a control just change it to a UserControl and get rid of main, and autoscalebasesize and if you have any menus change them to context menus.
Set project to compile as as dll and voila ! Bob your uncle ! (British expresssion, soz)