Alright, took a quick look see at yer code; got some tips for you.
First; the four buttons appear to run the same code, but in four different places (Click events)
I recommend creating a separate procedure- for example, "CheckAnswer", which will take A,B,C, or D as it's argument.
then, each of your four buttons will be one line; "CheckAnswer("A")" for button A, and so forth. I could hazard a guess and say you've never used separate subroutines, which is OK, but they make programming a lot easier, and you can never learn them too early.
Also; you've got no error handling code. While this is acceptable for a Alpha or beta, it never hurts; and you can never add, (or learn how to write) them too early.
For example, in Button2_Click, where you open the text file whose name resides in textbox2 (love your imaginative names, btw
) the readAlllines() call could easily fail; rather then have your game crash with a generic framework error, you could enclose the procedure code in Try...Catch Block, and then provide a more descriptive error to your users. I'd be more specific, but I'd Rather be accurate then dead wrong, and I'm far more experienced with VB6 then .NET... In fact I almost suggested the use of an "On Error" statement, but that doesn't exist in .NET, and if it does it was deprecated by try...catch.
Last critique would be to rename your controls. I happened under the same problem when I learned VB way back with Visual basic 2 on Windows 3.1; I simply used the default names. Nowadays I wonder why it even provides a default name... under how many circumstances does the name "Command1" or "Text1" describe the controls purpose? Not often, I'm sure. Even today, over 15 years later, the default behaviour for control naming is exactly the same as it was in 1991. On the up-side, they actually changed the menu editor after VB6 (although they changed pretty much everything and it only stood to reason that they would also revamp the 15 year old menu editor)
lastly- your use of the "lines()" array seems a but non-linear; from what I can gather, it contains the various questions. a more extensible method would be to use a integral variable to store your question number; them multiply that question number by 7(number of lines in each questions definition), and add 1 (the introduction question); this will give you the first line (hopefully) for the question; you can then add the numbers 1 through 6 to extract the various portions of the questions data.
I'd add some more positive stuff here, but I think my years of experience makes me a bit blind to what I used to think was neat and cool years ago. In any case, I commend your efforts