I do not see why you need a "While" loop - also, you show only one "End" statement but there need to be two, so I think I know why this is going wrong.
The Read Lines from Text File command is a Looping command just like the While command. So what you need to run first is this:
Set Variable PRINTLIST to
Read lines of file c:\temp\printers.txt into varialbe ALLPRINTERS Start Block
Set Variable PRINTLIST to %PRINTLIST%%ALLPRINTERS%%CRLF%
End
This block of code will now read in one line at a time and will loop until all lines are read and your PRINTLIST variable is fully populated. You can single step the Wisescript editor to watch the code work step by step, or you can put in a Display command after this block of code to display %PRINTLIST% so that you can check it is what you expect.
THEN you can display the %PRINTLIST% variable in your custom dialog. At the moment, the single END statement you have in your code is causing the code to read one line from the text file, and then immediately go to the Dialog. Then if you press continue on the dialog, it loops back and reads the next line and then displays two lines, etc, etc.
Is this where you are going wrong?
If not, drop me an example of the printer.txt file and let me expand the code sample for you.